在以下情況下,我需要幫助,我有兩個串列:
情況一:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [0, 1, 2, 3, 5, 5, 6, 7, 8, 9]
我需要密鑰輸出:密鑰 4不同
情況2:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
我需要密鑰輸出:false -> 沒有密鑰不同
情況3:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [0, 9, 2, 3, 4, 5, 6, 7, 3, 9]
我需要密鑰輸出:密鑰 1 和密鑰 8不同
我該如何解決這個問題?我的陣列有 260 個鍵
uj5u.com熱心網友回復:
您可以將串列推導與zip, 和一起使用enumerate來獲取索引。使用短路和空串列是虛假的事實來獲得False:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [0, 1, 2, 3, 5, 5, 6, 7, 8, 9]
out = [i for i,(e1,e2) in enumerate(zip(a,b)) if e1!=e2] or False
輸出:
[4]
輸出例如#2:False
輸出例如#3:[1, 8]
uj5u.com熱心網友回復:
一種方法itertools.compress。比較串列以檢查值的差異,將比較結果傳遞給compress它將只拾取True那些。
from itertools import compress
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [0, 1, 2, 3, 5, 5, 6, 7, 8, 9]
result = tuple(compress(a, map(int.__ne__, a, b)))
if not result:
print(False)
else:
print(result)
uj5u.com熱心網友回復:
當前的答案非常好,但是對于不需要 zip/enumerate 的方法,回圈如下:
lista = []
listb = []
unequal_keys = []
for idx in range(len(lista)):
if lista[idx] != listb[idx]:
unequal_keys.append(idx)
if unequal_keys == []:
print(False)
else:
print(unequal_keys)
我建議學習新技術并使用像 zip 和 enumerate 這樣的內置插件。它們更加pythonic和更快!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497047.html
