在迭代for循环python时如何检查先前的索引

use*_*514 2 python

我有一个有点随机的列表.

list  = [1,2,4,2,25,3,2,4,2,1,1,32,3,3,2,2,23,4,2,2,2,34,234,33,2,4,3,2,3,4,2,1,3,4,3]
Run Code Online (Sandbox Code Playgroud)

我想迭代它并做这样的事情:

for item in list:
    while item >=5:
        if item = item_5_indexes_ago
            print "its the same as it was 5 entries ago!"
Run Code Online (Sandbox Code Playgroud)

显然,item_5_indexes_ago是无效的python.我应该在这里替代什么?我想检查list [5] == list [1],如果list [6] == list [2],.....对于列表中的每个项目.

GHu*_*ugo 6

您还可以使用列表推导和enumerate函数来获取元素:

[l for i, l in enumerate(list[:-5]) if l == list[i+5]]
Run Code Online (Sandbox Code Playgroud)


Hen*_*rik 6

pythonic解决方案是使用内置enumerate来跟踪索引以及项目

for index, item in enumerate(my_list):
    if index >= 5:
        item_5_indexes_ago = my_list[index-5]
Run Code Online (Sandbox Code Playgroud)


Chr*_*ian 5

您可以循环使用索引:

for i in range(len(some_list)):
    # do something with
    # list[i]
Run Code Online (Sandbox Code Playgroud)

并且要访问前一个元素,您可以使用:

if i >= 4 and list[i] == list[i - 4]:
    print "its the same as it was 4 entries ago!"
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 既然你想检查list[5]==list[1],if list[6]==list[2]似乎你想要检查之前的元素4指数,而不是5.
  • 不要list将其用作变量的名称,因为它将隐藏其内置实现.