簡體   English   中英

比較兩個列表並制作新列表

[英]Comparing two lists and making new list

所以假設我有兩個列表a=[1,2,3,4,5,6]b=[2,34,5,67,5,6]我想創建第三個列表,其中有1元素在ab0相同時是不同的,所以上面就像c=[1,1,1,1,0,0]

您可以 zip 列表並在列表理解中比較它們。 這利用了布爾值相當於 python 中的 1 和 0 的事實:

a=[1,2,3,4,5,6]
b=[2,34,5,67,5,6] 

[int(m!=n) for m, n, in zip(a, b)]
# [1, 1, 1, 1, 0, 0]

嘗試使用zip對列表中每對項目的元素進行列表理解:

[ 0 if i == j else 1 for i,j in zip(a,b) ]

使用 for 循環進行迭代是一種選擇,盡管列表理解可能更有效。

a=[1,2,3,4,5,6]
b=[2,34,5,67,5,6]
c=[]
for i in range(len(a)):
    if a[i] == b[i]:
        c.append(0)
    else:
        c.append(1)
print(c)

印刷

[1, 1, 1, 1, 0, 0]

如果您將有多個向量操作並且它們應該很快。 結帳numpy

import numpy as np
a=[1,2,3,4,5,6]
b=[2,34,5,67,5,6]
a = np.array(a)
b = np.array(b)
c = (a != b).astype(int)
# array([1, 1, 1, 1, 0, 0])

如果這正是您正在尋找的東西,那么這應該可行:

edidt:剛剛發現 Joe Thor 比我早幾分鍾發表了幾乎完全相同的評論 lmao

a = [1, 2, 3, 4, 5, 6]
b = [2, 34, 5, 67, 5, 6]
results = []

for f in range(0, len(a)):
    if a[f] == b[f]:
        results.append(0)
    else:
        results.append(1)

print(results)

這可以使用 for 循環相當簡單地完成。 它確實假設兩個列表 a 和 b 的長度相同。 示例代碼如下所示:

a = [1,2,3,4,5,6]
b = [2,34,5,67,5,6]
c = []
if len(a) == len(b):
   for i in range(0,len(a)):
       if(a[i] != b[i]):
         c.append(1)
       else:
         c.append(0)

這也可以使用列表推導來完成:

a = [1,2,3,4,5,6]
b = [2,34,5,67,5,6]
c = []
if len(a) == len(b):
    c = [int(i != j) for i,j in zip(a,b)]

列表理解代碼來自此線程: Comparing values in two lists in Python

a = [1, 2, 3, 4, 5, 6]
b = [2, 34, 5, 67, 5,6]
c = []

index = 0
x = 1
y = 0
for i in range(len(a)):    # iterating loop from index 0 till the last 
    if a[index]!= b[index]:    # comapring each index 
            c.append(x)         # if not equal append c with '1'
            index += 1           # increment index to move to next index in both lists
    else:
            c.append(y)
            index += 1

print(c)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM