簡體   English   中英

計算兩個列表中數字的出現並返回一個列表

[英]Count occurrences of number in two lists and return one list

我試圖計算出現在兩個列表中的0一起出現的次數,並使用python保存該次數。 我正在嘗試使用“列表理解”命令將其放入第三個列表,但沒有得到想要的輸出。

我的兩個列表是:

list1 = [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
list2 = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0]

因此,每當每個列表中的同一位置出現0時,我都希望將“ 0”附加到新列表中。 我想對那些做同樣的事情。

新列表應如下所示:

newlist = [0,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1,1]

感謝您事先提供的幫助,我已經嘗試了好幾個小時了,但仍無濟於事!

您可以使用列表推導,如下所示:

answer = [x for x, y in zip(list1, list2) if x == y]

或者,您可以使用簡單的列表操作來解決, 而無需列表理解:

answer = []
for x, y in zip(list1, list2):
    if x == y:
        answer.append(x)

在這兩種情況下, answer都是:

[0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]
[x or y for x,y zip(list1, list2)]
[0 if x == (0,0) else 1 for x in zip(list1,list2)]

如果希望由01組成的列表(按01順序出現在兩個列表中的同一位置) ,則可以使用以下列表理解:

result = [a for a, b in zip(list1, list2) if a==b]

測試

但是,測試您的值:

>>> newlist = [a for a, b in zip(list1, list2) if a==b]
>>> newlist
[0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]

您會看到結果不符合您的預期:

>>> newlist == [0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1]
False

因此,您的問題是:您提供的預期結果是否正確?

list1 = [0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1]
list2 = [0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0]
temp = [ list1[i] if list1[i] == list2[i] else 2 for i in range( 0, len(list1) )]
answer = [value for value in temp if value != 2]
print( answer )

暫無
暫無

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

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