我有一个这样的值列表:
vect_i = ['a','X','c','g','X','t','o','X','q','w','e','r','t','y','u','i','o','p','Y','x','c','v','b','Y','b','n','m','Y','q','a','d','Y',]
我的目标是以一种聪明的方式只选择最后一个 X 和第一个 Y(注意大写字母 X 和 Y)内的值。
输出应该是这样的:
vect_f = ['q','w','e','r','t','y','u','i','o','p','Y','x','c','v','b']
有没有一种聪明的方法来做这个选择。我已经找到了一种方法,通过计算 X 和 Y 的数量并仅收集相应索引之间理解的内容,但我认为这是非常糟糕的编码。
您能建议我实现目标的好方法吗?
请您参考如下方法:
大多数其他答案要么多次调用 index,要么以某种形式改变和/或复制列表。我认为您可以简单地使用 enumerate 并在 O(n) 中获取所需位置的切片索引:
ix = iy = 0
for i, v in enumerate(vect_i):
if v == 'X':
ix = i
elif v == 'Y':
iy = i
break
print(vect_i[ix+1:iy])
# ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p']
