我有以下串列:
list_1_test = [['hi','there','how'],['we','are','one']]
list_2_test = [['hi','you','how'],['we','not','one']]
我希望比較串列中的單詞并獲得以下輸出:
list_3_test = [['there','you'],['are','not']]
我知道如何在一個簡單的串列中執行此操作,例如:
list_1_test = ['hi','there','how']
list_2_test = ['hi','you','how']
list_3_test=[]
for i in list_1_test:
if i not in list_2_test:
list_3_test.append(i)
for i in list_2_test:
if i not in list_1_test:
list_3_test.append(i)
結果是
['there', 'you']
但是一提到清單,我的腦子就炸了。順序很重要。任何幫助深表感謝。
uj5u.com熱心網友回復:
如果順序無關緊要,您可以使用集合操作 串列理解:
out = [list(set(l1).union(l2) - set(l1).intersection(l2)) for l1, l2 in zip(list_1_test, list_2_test)]
輸出:
[['you', 'there'], ['are', 'not']]
如果訂單很重要,您可以使用dict.fromkeys:
out = []
for l1, l2 in zip(list_1_test, list_2_test):
one = dict.fromkeys(l1).keys()
two = dict.fromkeys(l2).keys()
out.append(list(one - two) list(two - one))
輸出:
[['there', 'you'], ['are', 'not']]
uj5u.com熱心網友回復:
您可以使用集合和 symetric_difference 方法 (^):
list3 = []
for l1, l2 in zip(list_1_test, list_2_test):
sym_dif = set(l1)^set(l2)
list3.append(list(sym_dif))
串列理解格式的先前代碼:
list3 = [set(l1)^set(l2) for l1, l2 in zip(list_1_test, list_2_test)]
uj5u.com熱心網友回復:
all_list = []
for i in list_1_test:
all_list.append(' '.join(i))
for i in list_2_test:
all_list.append(' '.join(i))
list_str = ' '.join(all_list)
result = []
for i in list_str.split():
if list_str.count(i) == 1:
result.append(i)
print(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394048.html
上一篇:如何在Python中的物件串列中獲取單個專案的屬性?
下一篇:Arduino ESP32 Blinker 畢業設計 課程設計 DIY 003——基于ESP32的嬰兒提醒的設計與制作
