我想迭代一个列表,想要比较列表的元素。例如:第一个元素将与下一个元素进行比较。我有一个清单a:
for i in range(len(a))
for i+1 in range(len(a)) #check code
if a[i] == a[i+1]
a.pop(i+1)
有人可以建议如何在python中执行此操作吗?
答案 0 :(得分:0)
从 second 元素开始,将每个元素与其前一个元素进行比较。
for ix in range(1, len(a)):
compare_items(a[ix], a[ix - 1])
答案 1 :(得分:0)
你没有按元素迭代(即for el in a
),这是一件好事,因为我相信修改你迭代的列表是行不通的。
然而,你的方法仍然有一个缺陷,因为在循环开始时计算了许多元素len(a)
并且索引没有考虑到你要移除元素的事实,所以被检查元素将引用pop之后列表中的位置(跳过元素和超出列表长度)。
您的示例使用临时列表b:
a=[1,3,3,6,3,5,5,7]
b=a[0:1]
for i in range(len(a)-1):
print (a[i],a[i+1])
if a[i]!=a[i+1]:
b.append(a[i+1])
a=b
或单行版本:
from itertools import compress
list(compress(a,[x!=y for x,y in zip(a[:-1],a[1:])]))
无论如何,如果您的目的是删除列表中的连续重复项目,您可以轻松搜索谷歌或堆栈溢出' python从列表中删除连续重复项目。
答案 2 :(得分:0)
for this, next in zip(a, a[1:]):
compare(this, next)