[英]Checking if each values in list are identical to another list one by one. (Python 3)
例如,我們有 2 個列表:
list_1 = [12, 3, 45, 2, 50]
list_2 = [6, 3, 30, 5, 50]
正如我們所看到的,我們在兩個列表中有兩個相同的值。 我目前正在嘗試找出一個代碼,如果兩個值按順序相同,它將檢查列表中的每個值,並且它將返回 False 或 True。 (檢查每個列表的第一個值是否相同。在這種情況下,他們首先檢查 12 和 6 是否相同,由於它們不相同,它將返回 False。他們檢查下一個,如果 3 和3 是相同的,並且由於它是相同的,它們將返回 True。)
如果有人願意幫助我就好了。
只需將它們與==
運算符進行比較。
all(map(lambda x, y: x == y, list_1, list_2))
試試這個:
list_1 = [12, 3, 45, 2, 50]
list_2 = [6, 3, 30, 5, 50]
list_3 = [1, 2, 3, 4]
list_4 = [1, 2, 3, 4]
print(all(map(lambda x, y: x == y, list_1, list_2)))
print(all(map(lambda x, y: x == y, list_3, list_4)))
輸出:
False
True
您也可以手動比較元素:
def compare_lists(list_1, list_2):
if(len(list_1) != len(list_2)):
return False
for i in range(len(list_1)):
if list_1[i] != list_2[i]:
return False
return True
您可以使用all
+ zip()
然后您可以將它們與==
進行比較。
從文檔:
all(iterable)
:如果可迭代對象的所有元素都為真(或者可迭代對象為空),則返回 True。
zip(*iterables)
; 制作一個迭代器,聚合來自每個可迭代對象的元素。
list_1 = [12, 3, 45, 2, 50]
list_2 = [6, 3, 30, 5, 50]
def check_lists(l1,l2):
return all(x==y for x,y in zip(l1,l2))
print (check_lists(list_1,list_2))
或者,您可以直接比較它們
print(list_1==list_2)
我們可以使用 for 循環來實現這一點。 (我知道這種方法是老派,您可以通過使用 map() 和 all() 函數使用單線實現相同的效果)
我先寫完整的代碼。 然后我會解釋每個步驟。
(我假設列表將具有相同數量的元素。)
代碼:-
list_1 = [12, 3, 45, 2, 50]
list_2 = [12, 3, 45, 2, 50]
length = len(list_1) # STEP 1
result = True # STEP 2
for i in range(0, length): # STEP 3
if list_1[i] != list_2[i]:
result = False
break
print(result) # STEP 4
第1步
確定列表的長度。 這可以通過len()
函數來完成。 len(list_1)
將返回 list_1 的長度
第2步
聲明一個變量result
來存儲結果。 將其初始化為True
。 通過這樣做,我們假設我們的列表是相同的。 如果它們不是那么我們將result
的值更改為False
result = True
第 3 步
遍歷第一個列表中的每個元素,並將其與第二個列表中的相應元素進行比較。 如果它們不同,則將result
的值更改為False
並跳出for
循環,因為無需檢查其他元素。
for i in range(0, length):
if list_1[i] != list_2[i]:
result = False
break
第四步
打印出最終輸出print(result)
在這種情況下,他們首先檢查 12 和 6 是否相同,並且由於它們不相同,因此將返回 False。 他們檢查下一個,如果 3 和 3 相同,並且由於相同,他們將返回 True。
您可以使用itertools.zip_longest來迭代多個序列,並一次擁有它們的第 n 個項目,例如,在您的列表中將是 12 和 6,然后是 3 和 3,然后是 45 和 30,依此類推。
from itertools import zip_longest
list_1 = [12, 3, 45, 2, 50]
list_2 = [6, 3, 30, 5, 50]
result = [
value_1 == value_2
for value_1, value_2 in zip_longest(list_1, list_2)
]
print(result)
輸出:
[False, True, False, False, True]
在這里,您可以看到(基於 1 的編號)第 2 個(值為 3)和第 5 個(值為 50)項是相同的,因此只有True
。
一種手動檢查和比較列表中每個值的手動方法。 list_1 = [12, 3, 45, 2, 50] list_2 = [6, 3, 30, 5, 50]
if(len(list_1) == len(list_1)):
for i in range(0,len(list_1)):
print(list_1[i] == list_2[i])
else:
print(False) #note that If this line is executed we will get only one output
這是結果:假真假假真
(已編輯)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.