2017-10-28 94 views
0

這裏面我有一個嵌套列表:找到元素出現的次數在每個列表的列表

[['a,b,c,d,e’], [‘d,e,c,b,a’], [‘e,b,a,e,c’], ['a,c,b,e,d'], [‘e,d,c,b,a’], [‘a,c,b,d,e']] 

我想算的「一」,在每個列表的開頭出現的次數,所以這將是3.我也希望能夠對列表中的每個字母做同樣的事情,所以我知道每個列表的第二個位置中的「b」的數目是2. 這可能更容易想象如果您將每個列表放在彼此的頂部並向下看列。

我希望能夠給出字母和位置來掃描並接收該位置中該字母的出現次數。我希望我很清楚。

這裏是我到目前爲止已經試過:

number=sum(x.count("a") for x in data[0][0]) 
+0

是。你很清楚。你有什麼試圖解決這個問題? –

+0

如何使用三個不同的「引號」字符,不一致,而其中兩個是無效的? –

+0

我想,這只是從一些書/格式化的文檔複製 – RomanPerekhrest

回答

1

在最簡單的情況下,你可以使用以下方法:

data = [['a,b,c,d,e'], ['d,e,c,b,a'], ['e,b,a,e,c'], ['a,c,b,e,d'], ['e,d,c,b,a'], ['a,c,b,d,e']] 
letter = 'b' 
pos = 1 
result = sum(1 for i in data if letter in i[0] and i[0].split(',')[pos] == letter) 

print(result) 

輸出:

2 

爲了獲得更準確和可靠的解決方案:

data = [['a,b,c,d,e'], ['d,e,c,b,a'], ['e,b,a,e,c'], ['a,c,b,e,d'], ['e,d,c,b,a'], ['a,c,b,d,e']] 
letter = 'b' 
pos = 1 
result = 0 

for i in data: 
    if letter in i[0]: 
     items = i[0].split(',') 
     if pos < len(items) and items[pos] == letter: 
      result += 1 

print(result) 
+0

如果你想「最簡單」,爲什麼你在我[0]和'包括'字母?有必要嗎? –

0

您應該使用函數而不是僅循環。因爲它更容易給一個參數爲指標沒有和代號:

這裏是解決方案具有功能:

list_1= [['a,b,c,d,e'], ['d,e,c,b,a'], ['e,b,a,e,c'], ['a,c,b,e,d'], ['e,d,c,b,a'], ['a,c,b,d,e']] 

    def find(index,letter,list_1): 
     count=0 
     for item in list_1: 
      for subitem in item: 
       if subitem[index]==letter: 
        count+=1 
     return count 

測試與 'A' 與指數0:

print(find(0, 'a', list_1)) 

輸出:

3 

試驗帶 'B' 具有索引2:

print(find(2, 'b', list_1)) 

輸出:

2 
相關問題