![](/img/trans.png)
[英]How do I remove the previous question printed when iterating through a loop in python?
[英]How can I check a previous index when iterating through a for loop 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]
我想遍历它并执行以下操作:
for item in list:
while item >=5:
if item = item_5_indexes_ago
print "its the same as it was 5 entries ago!"
显然, item_5_indexes_ago 不是有效的 python。 我应该在这里替换什么? 我想检查 list[5]==list[1], if list[6]==list[2], ..... 对于列表中的每个项目。
您还可以使用列表理解和enumerate
函数来获取元素:
[l for i, l in enumerate(list[:-5]) if l == list[i+5]]
pythonic解决方案是使用内置enumerate
来跟踪索引以及项目
for index, item in enumerate(my_list):
if index >= 5:
item_5_indexes_ago = my_list[index-5]
您可以改为循环遍历索引:
for i in range(len(some_list)):
# do something with
# list[i]
并访问前一个元素,您可以使用:
if i >= 4 and list[i] == list[i - 4]:
print "its the same as it was 4 entries ago!"
笔记:
list[5]==list[1]
并且if list[6]==list[2]
似乎您想检查元素4之前的索引,而不是 5。list
作为变量的名称,因为它会隐藏其内置实现。执行此操作的最简单方法:
for index, item in enumerate(list):
if index>=5:
if item == list[index-5]:
print "It's the same as it was 5 entries ago!"
在这种情况下,更方便的循环是按索引循环,如下所示:
for i in range(len(list)):
if i >= 5 and list[i] == list[i-5]:
print "it's the same as it was 5 entries ago!"
与zip
并行迭代list[5:]
和list[:-5]
:
for item, item_5_indices_ago in zip(list[5:], list[:-5]):
do_whatever_with(item, item_5_indices_ago)
由于zip
在最短输入序列时停止,因此您可以将list[:-5]
替换为list
。 另外,不要调用你的 list list
,或者当你尝试调用内置的list
时,你会得到一个奇怪的TypeError
。
只需以 6 人为一组逐步浏览列表:
from itertools import izip_longest
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
for fives in grouper(biglist, 6):
if fives[:-1].count(fives[-1]) > 1:
print("its the same!")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.