如何仅在另一个 python 列表中的某个值之后附加到列表?

How do I append to list only after a certain value in another python list?

我有 2 个列表。我只想在达到指定值后追加到新列表。

old_list = ['apple', 'pear','orange', 'banana', 'grape']
new_list = []
value  = 'orange'

期望的结果是:

new_list = ['banana', 'grape']

我试过了,结果不是我想要的:

for i in old_list:
    if i != value:
        new_list.append(i)

希望这是有道理的!

使用 list.index 方法 return 索引 i,其中 value 出现在 old_list 中。然后从索引 i+1 开始切片 old_list 直到结束:

old_list = ['apple', 'pear','orange', 'banana', 'grape']
value  = 'orange'

i = old_list.index(value)
new_list = old_list[i+1:]

您可以尝试使用布尔值来检查 'orange' 是否已通过。

试试这个:

old_list = ['apple', 'pear','orange', 'banana', 'grape']
new_list = []
value  = 'orange'

checker = False

for i in old_list:
  if checker:
    new_list.append(i)
  if i == value:
    checker = True

希望对您有所帮助

您可以创建一个 if 语句来检查第一个列表是否包含您的“指定值”,然后附加到下一个列表。

如果没有,它将附加到第一个列表。

例如

old_list = ['apple', 'pear','orange', 'banana', 'grape']
new_list = []
value  = 'orange'

if value in old_list:
   new_list.append('banana', 'grape')

else:
   old_list.append('banana', 'grape')

哈尼尔

有很多方法可以做到。在不知道您尝试过什么的情况下,这是一种方法:

i = old_list.index('orange')
i = i + 1

while i < len(old_list):
    new_list.append(old_list[i])
    i = i + 1

找到 'orange' 的索引,然后遍历 old_list 中的剩余值并将它们附加到 new_list.

使用itertools模块,

from itertools import dropwhile


def takeafter(iterator, value):
    itr = dropwhile(lambda x: x != value, iterator)
    try:
        next(itr)
    except StopIteration:
        pass
    return itr


old_list = ['apple', 'pear','orange', 'banana', 'grape']
new_list = []
value  = 'orange'

new_list.extend(takeafter(old_list, value))

dropwhile 创建一个迭代器,一旦谓词为真,它就开始从其输入中产生值。由于我们也不想要第一项,因此我们使用 next 在返回迭代器之前提前传递了起始值。