如果我有一个列表列表,并且我想删除 'd'
之后的所有项目,并且我想根据 'd'< 的索引位置来执行此操作
在两个列表中,如果每个列表中 'd'
的索引位置不同,我该怎么做。
还有比索引更好的方法吗?
ab_list = ['a', 'b', 'c' ,'d','e', 'f'], ['a', 'd', 'e', 'f', 'g']
loc=[]
for i in ab_list:
loc.append(i.index('d'))
print(loc)
# output is [3, 1]
for i in ab_list:
for l in loc:
ab_list_keep=(i[0:l])
print(ab_list_keep)
## output is
#['a', 'b', 'c']
#['a']
#['a', 'd', 'e']
#['a']
输出的前两行是我想要的,但是从 'd'
的索引位置创建列表似乎并不正确。
最佳答案
Python内置itertools.takewhile
方法是为这样的情况设计的:
import itertools
ab_list = ['a', 'b', 'c' ,'d','e', 'f'],['a', 'd', 'e', 'f', 'g']
print([list(itertools.takewhile(lambda i: i != "d", sublist)) for sublist in ab_list])
输出:
[['a', 'b', 'c'], ['a']]
关于python - 根据不同的索引位置删除列表列表中的公共(public)项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57318132/