亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從嵌套類中刪除反向重復項 - python

從嵌套類中刪除反向重復項 - python

呼如林 2022-12-27 15:49:37
我正在處理從列表中刪除重復元素的代碼。重復順序可能不同,但我仍然認為兩者相同。例如,我會考慮[[m, b], [c, d]]并[[c, d], [m, b]]刪除重復項。我正在編寫一個代碼,將這些代碼識別為重復的,并從整個列表中刪除多余的。到目前為止,我在一個沒有任何重復項的列表上進行了嘗試,因此結束列表應該沒有變化。這是名單,A= [[[a1, b1], [a1, b1]], [[a2, b2], [a2, b2]], [[a3, b3], [a3, b3]], [[a4, b4], [a4, b4]]]我使用的代碼是,for i in A:    for j in A:        if j[1]== i[0]:            if j[0]==i[1]:                A.remove(j)我希望代碼將給定內部列表 (j[1]) 中的第二個元素與另一個內部列表 (i[0]) 中的第一個元素進行比較,j[0] 和 i[1] 也類似,并且如果它們相等(即 i 和 j 彼此重復),則從列表中刪除其中一個元素。問題是,使用此代碼,輸出不應該與起始列表 (A) 不同,但結果是這樣的,[[[a2, b2], [a2, b2]], [[a4, b4], [a4, b4]]]我只是在尋找為什么會發生這種情況以及如何更改我的代碼以避免該問題的輸入。
查看完整描述

3 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

要比較兩個列表的交集,使用sets會很有幫助,尤其是當您的列表有兩個以上的元素時。


a = ['m', 'n']

b = ['n', 'o']

print(set(a) & set(b)) # The & operator returns the intersecting elements


-> {'n'}

至于你的問題,這段代碼應該有效:


for a in A:

  B = A.copy()

  B.remove(a) # so you don't compare a to a and mark it as a duplicate

  for b in B:

    if set(b[0]) & set(b[1]):

      A.remove(b)


查看完整回答
反對 回復 2022-12-27
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

要比較兩個列表的交集,使用sets會很有幫助,尤其是當您的列表有兩個以上的元素時。


a = ['m', 'n']

b = ['n', 'o']

print(set(a) & set(b)) # The & operator returns the intersecting elements


-> {'n'}

至于你的問題,這段代碼應該有效:


for a in A:

  B = A.copy()

  B.remove(a) # so you don't compare a to a and mark it as a duplicate

  for b in B:

    if set(b[0]) & set(b[1]):

      A.remove(b)


查看完整回答
反對 回復 2022-12-27
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

試試這個:


>>> import numpy as np

>>> def remove_duplicates(A):

...     for sublist in A:

...             sublist.sort()

...     B = []

...     for sublist in A:

...             if sublist not in B:

...                     B.append(sublist)

...     return B

... 

>>> A = np.random.randint(low=0, high=3, size=(8, 2)).tolist()

>>> A

[[0, 1], [1, 0], [0, 2], [0, 0], [2, 2], [2, 2], [0, 2], [1, 0]]

>>> remove_duplicates(A)

[[0, 1], [0, 2], [0, 0], [2, 2]]

在 python 3.7.7 上測試。


查看完整回答
反對 回復 2022-12-27
  • 3 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號