2017-09-09 156 views
-1

我想迭代一個列表並想要比較列表中的元素。例如:第一個元素將與下一個元素進行比較。我有一個列表:比較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中做到這一點?

+2

什麼**完全**你想完成?你的預期產出是多少? –

+0

你只是想刪除連續的重複? – AChampion

+0

可能的重複[如何從列表中刪除連續的重複?](https://stackoverflow.com/questions/39237350/how-do-i-remove-consecutive-duplicates-from-a-list) – Vincenzooo

回答

0

第二個元素開始,將每個元素與其前任進行比較。

for ix in range(1, len(a)): 
    compare_items(a[ix], a[ix - 1]) 
0

你是不是遍歷列表中元素(即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從列表中刪除連續重複'。

0
for this, next in zip(a, a[1:]): 
    compare(this, next)