在循环中获取列表的下一个值

时间:2014-08-13 17:24:27

标签: python list

我有以下列表:

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条件。

提前谢谢

3 个答案:

答案 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