我想迭代一個列表並想要比較列表中的元素。例如:第一個元素將與下一個元素進行比較。我有一個列表:比較python列表中的元素
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中做到這一點?
我想迭代一個列表並想要比較列表中的元素。例如:第一個元素將與下一個元素進行比較。我有一個列表:比較python列表中的元素
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中做到這一點?
從第二個元素開始,將每個元素與其前任進行比較。
for ix in range(1, len(a)):
compare_items(a[ix], a[ix - 1])
你是不是遍歷列表中元素(即for el in a
),這是一件好事,因爲我相信修改過,你是迭代是行不通的列表。 但是,您的方法仍然存在缺陷,在循環開始時計算了許多元素len(a)
,並且索引沒有考慮到要移除元素的事實,因此檢查的元素將引用彈出後列表中的位置(跳過元素和超出列表長度)。 使用臨時表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從列表中刪除連續重複'。
for this, next in zip(a, a[1:]):
compare(this, next)
什麼**完全**你想完成?你的預期產出是多少? –
你只是想刪除連續的重複? – AChampion
可能的重複[如何從列表中刪除連續的重複?](https://stackoverflow.com/questions/39237350/how-do-i-remove-consecutive-duplicates-from-a-list) – Vincenzooo