簡體   English   中英

如何從python中的列表中獲取所有單獨的所有相等對

[英]How to get all seperate all equal pairs from a list in python

我正在嘗試編寫一個 python 程序來查找列表中的所有相等對。 因此,如果列表中有一個元素的單個重復,它將被添加到列表中。

[2,2,2,2,2] 將變成 [2,2]

[8,8,8,2] 將變成 [8]

[8,16,16,8] 會變成 [8,16]

[2,0,2,4] 將變成 [2]

[0,0,2,2] 將變成 [0,2]

到目前為止,我已經嘗試過嵌套 for 循環。

def pairfinder(newlist):
pairlist = []
for idx in range(len(newlist)):
    for jdx in range(idx+1,len(newlist)):
        if newlist[idx] == newlist[jdx]:
            pairlist.append(newlist[idx])
            break
return pairlist

這給了我在某些情況下的正確答案......但不是全部

抱歉不夠清楚。

print [a for a,b in zip(my_list[::2],my_list[1::2]) if a == b]

您可能需要先對my_list進行排序...

my_list = sorted(my_list)
print [a for a,b in zip(my_list[::2],my_list[1::2]) if a == b]

我完全不確定這能解決您的問題。

def do_this_weird_thing(a_list):
    from itertools import groupby
    for grp,item in groupby(sorted(a_list)):
        item = list(item)
        yield [grp] * (len(item)//2)

from itertools import chain
print list(chain.from_iterable(do_this_weird_thing([2,0,2,4])))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM