Python 如何在当前索引/迭代中访问for循环中的下一个元素?

Python 如何在当前索引/迭代中访问for循环中的下一个元素?,python,Python,我几乎没有学习python,也没有尝试编写一些代码,但是在尝试访问列表中的下一个元素时遇到了一些问题 以下是我的部分代码: for word2 in vocab_list: index2 = 0 for elem in sentence2: if (elem == word2 and nextElem == nextWord2) do something index2 += 1 问题在于nexteme和nextWord2,

我几乎没有学习python,也没有尝试编写一些代码,但是在尝试访问列表中的下一个元素时遇到了一些问题

以下是我的部分代码:

for word2 in vocab_list:
    index2 = 0
    for elem in sentence2:
        if (elem == word2 and nextElem == nextWord2)
            do something
        index2 += 1
问题在于
nexteme
nextWord2
,如果我在当前迭代中,如何访问它们?

存储前面的单词:

prev2 = None
for word2 in vocab_list:
    prev = None
    for elem in sentence2:
        if prev == prev2 and elem == word2:
            # do something
        prev = elem
     prev2 = word2
向后看比向前看容易得多

至于使用索引,您可以始终使用
enumerate()
函数向循环添加索引;在这种情况下,您可以通过以下方式展望未来:

对于j,枚举中的单词2(词汇列表): 对于i,枚举中的元素(第2句): 如果i+1 但是跟踪上一个元素更容易。

您可以使用它,这也会阻止您使用
索引器

for word2, nextWord2 in zip(vocab_list, vocab_list[1:]):
    for elem, nextElem in zip(sentence2, sentence2[1:]):
        if (elem == word2 and nextElem == nextWord2)
           #Do something 
演示:

>>> lis = range(5)
>>> for item, next_item in zip(lis, lis[1:]):
...     print item, next_item
...     
0 1
1 2
2 3
3 4
请注意,
zip
返回一个列表,因此如果
zip
的输入数据很大,那么最好使用它,因为它返回一个迭代器。而不是使用切片获取迭代器


在演示中,您可以看到循环中的
zip
item=3
处停止,这是因为
zip
对最短的iterable短路。如果您希望输出为
4,一些默认值
,则使用,它允许您为较短的iterables中缺少的项提供默认值。

如果您按数组的索引号而不是实际元素进行迭代,则可以访问列表的任何成员:

for i in range(len(vocab_list)-1):
    for j in range(len(sentence)-1):
        if(vocab_list[i]==sentence[j] and vocab_list[i+1]==sentence[j+1]):
            print "match" 

但在这种情况下,你不需要确保长度均匀吗?我认为有一个itertools函数可能允许odds@WayneWerner你的意思是
iterools.izip_longest
?这很好,但问题是我需要访问我的vocab_列表中的一个元素,我的vocab_列表中的每一行实际上都分为3个索引,所以如果我使用“for I in range(len(vocab_列表)-1)”,我怎样才能以这样的方式更改它,以便访问I的每个索引?…因为您的代码使用I作为整数索引遍历列表,这将整行存储在列表中没有问题-这意味着您正在迭代多维数组。此语法将读取vocab_列表中每行的各个元素:vocab_列表[i][0]、vocab_列表[i][1]或vocab_列表[i][2]。问题是,我需要访问第2句“first”中的第一个元素,以及第2句“second”中的第二个元素,这些是一个列表中的相邻单词,我想检查我的词汇列表中的第一个元素是否在第二个元素之前。你想要两个嵌套的迭代,一个在
词汇列表
上,一个在
句子
上,并且能够在两者中窥视以下项目?