如何仅在另一个 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
在返回迭代器之前提前传递了起始值。
我有 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
在返回迭代器之前提前传递了起始值。