2017-09-03 14 views
2

我試圖計算一個列表中的每個項目使用python的.count出現在另一個列表中的次數。這是我的:如何使用.count來計算一個列表中的每個項目出現在python的另一個列表中的次數?

tentslist = ['E4', 'C2', 'C8', 'G8', 'G1', 'A7', 'C5', 'G4', 'A5', 'E1', 'E6', 'A3'] 
x1t = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8'] 

print(x1t.count(tentslist[0-11])) 

我要找的輸出是3,但是我得到0.爲什麼這是?我該如何解決?

謝謝。

回答

2

問題是它計算整個tentslist在x1t中的次數。這確實是0.

你似乎想要的是來自x1t的元素在tentslist中有多少次?那麼這將是一個解決方案

tentslist = ['E4', 'C2', 'C8', 'G8', 'G1', 'A7', 'C5', 'G4', 'A5', 'E1', 'E6', 'A3'] 
x1t = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8'] 

count = 0 
for x in x1t: 
    count += tentslist.count(x) 

print(count) 
2

這可以通過使用列表理解

count = sum([x1t.count(x) for x in tentslist]) 

這是在第一次計數的出現次數爲每個元素,稍後對其求和得到總的結果被achive

編輯:正如在評論中提出一個能也是完全刪除列表理解,只是使用這個

count = sum(x1t.count(x) for x in tentslist) 
+0

名單是沒用的 - 事實上,它增加了複雜性。刪除方括號,結果將是相同的。事情是'sum'需要一個* iterable *,它可以是一個列表,但也可以是一個生成器和一個生成器表達式。 –

0

以下是count()方法的語法: list.count(obj) obj是要在列表中計算的對象。

你的代碼將返回NOT NULL只有在那裏:

tentslist = ['E4', 'C2', 'C8', 'G8', 'G1', 'A7', 'C5', 'G4', 'A5', 'E1', 'E6', 'A3'] 
x1t = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', ['E4', 'C2', 'C8', 'G8', 'G1', 'A7', 'C5', 'G4', 'A5', 'E1', 'E6', 'A3']] 

print(x1t.count(tentslist)) 

output: 1 

用途:

tentslist = ['E4', 'C2', 'C8', 'G8', 'G1', 'A7', 'C5', 'G4', 'A5', 'E1', 'E6', 'A3'] 
x1t = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8'] 
matches = set(x1t) & set(tentslist) 
match_count = len(matches) 
2

需要交集?

len(set(x1t) & set(tentslist)) 

輸出:3

0

總和(tentslist.count(X)在X1T X)

相關問題