我有以下列表:
elements = ['a', 'b', 'c', 'd','e','f']
和
y = ['c','d']
我想编码:
for i in elements:
if i in y: do something
elif the next element after i is in y: do something
基本上,如果i
在'b'
内迭代elements
,我希望循环到"看到"接下来会'c'
,而我不确定如何将其变为IF条件。
提前谢谢
答案 0 :(得分:4)
您始终可以使用enumerate
来获取i
的当前索引。然后下一个元素是elements[index+1]
。
for index, i in enumerate(elements[:-1]):
if i in y: do something
elif elements[index+1] in y: do something
答案 1 :(得分:1)
以下内容可能会给您一个想法:
for this, next in zip(elements[:-1], elements[1:]):
print this, next # do your thing instead
答案 2 :(得分:1)
迭代循环中的索引:
for index in range(len(elements)):
if elements[index] in y:
# do something
elif index < len(elements) - 1 and elements[index + 1] in y:
# do something else
当然,您也可以使用enumerate
执行此操作(尽管我不喜欢混合索引和项目枚举):
for index, element in enumerate(elements):
if element in y:
# do something
elif index < len(elements) - 1 and elements[index + 1] in y:
# do something else
请注意,我们需要检查index < len(elements) - 1
,因为否则elements[index + 1]
失败
正如@PadraicCunningham在评论中指出的那样,你也可以在enumerate
上使用elements[:-1]
(除了最后一项之外的所有内容)来进行索引检查。但请注意,永远不会为包含该选项的最后一项输入第一个if
部分:
for index, element in enumerate(elements[:-1]):
if element in y:
# do something
elif elements[index + 1] in y:
# do something else