1
所以我有兩個int列出X和Y(任意長度的),並希望刪除有效地出現在每個列表中的重複。既然你不能/不應該通過它編輯列表會循環,我的嘗試是:查找並從兩個列表在Python除去比賽
matches = [match for match in xs if match in ys]
for match in matches:
xs.remove(match)
ys.remove(match)
但重要的,如果值XS但一旦YS出現兩次,這會產生一個錯誤,因爲「如果ys匹配」對於相同的值計算結果爲兩次,但我需要它只計算一次。
所以要澄清,如果:
xs = [0, 2, 4, 8, 8, 100]
ys = [1, 3, 5, 8, 8, 8, 10]
然後8個需要從兩個列表中刪除兩次。
我怎麼能這樣做有效地?由於
編輯:列表不一定排序並在實踐中這兩個列表都可能含有重複。
它適用於只有2個重複,但不n個重複,已經更新了例子來說明這 –
@BenJones啊,我明白了。你能澄清嗎?在這種情況下應該發生什麼:'xs = [1,1,1,1,2]''ys = [1,1,3]'?期望的輸出? 'xs = [1,1,1,2]''ys = [1,3']?或'xs = [1,1,2]''ys = [3]'或'xs = [1,2]''ys = [3]'? –
這兩個列表中共有兩個1,因此期望的輸出是xs = [1,1,2]和ys = [3],對於混淆抱歉! –