我有一個清單s:
s=[[1,2,1],[2,2,1],[1,2,1]]
案例 1:洗掉串列中的重復組
案例 2:洗掉組內的重復值
期望的結果:
Case 1 : [[1,2,1],[2,2,1]]
Case 2 : [[1,2],[2,1],[1,2]]
我嘗試使用,list(set(s))但它引發了一個錯誤:
不可散列的型別:“串列”
uj5u.com熱心網友回復:
國際大學聯合會,
情況1:
將串列轉換為元組以進行散列,然后在元組串列上應用一組以洗掉重復項。最后,轉換回串列。
out1 = list(map(list, set(map(tuple, s))))
# [[1, 2, 1], [2, 2, 1]]
案例二:
對于每個子串列,洗掉重復項,同時通過轉換為字典鍵(唯一)保持順序,然后回傳串列:
out2 = [list(dict.fromkeys(l)) for l in s]
# [[1, 2], [2, 1], [1, 2]]
uj5u.com熱心網友回復:
您需要知道在 Python 中不可能有一組串列。原因是串列不可散列。在第一種情況下完成任務的最簡單方法是使用沒有重復的新串列串列,如下所示:
temp_list = []
for each_element in [[1,2,1],[2,2,1],[1,2,1]]:
if each_element not in temp_list:
temp_set.append(each_element)
print(temp_list)
輸出:
[[1, 2, 1], [2, 2, 1]]
case2 更簡單:
temp_list = []
for each_element in [[1,2,1],[2,2,1],[1,2,1]]:
temp_list.append(list(set(each_element)))
print(temp_list)
這是輸出:
[[1, 2], [1, 2], [1, 2]]
然而這些代碼不是pythonic的做事方式,初學者很容易理解。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/433027.html
上一篇:對for回圈運行x次分析
