2017-05-28 58 views
0

我在另一個枚舉循環中枚舉了循環,我想使用內部列表中的某些項目。我以爲以下幾點:如何從列表中選擇特定的索引? (即第1個,第6個和第13個值)

list1 = ['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5'] 

for number, list in enumerate(list1): 
    for num, item in enumerate(list[0, 1, 4]): 
    print item 

會打印出:

a 
b 
e 
one 
two 
five 
1 
2 
5 

而是我得到的錯誤TypeError: list indices must be integers, not tuple。我知道我可以使用list1[0:5]來選擇一個範圍,所以我想我也可以明確地選擇項目。

任何人都可以解釋如何實現此打印輸出?

+1

對我來說,你的問題不清楚。標題與內容不同。另外,你確定你沒有在'list1'中輸入錯字嗎? –

回答

1

如果你知道你想要的索引,你只需要簡單地說,索引列表中的具體指標,並打印值。

但是,您還應該注意,該列表是零索引。第一個值是索引0。這意味着你要0,1,4,而不是1,2,5

>>> list1 = [['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5']] 
>>> 
>>> for lst in list1: 
     a, b, c = lst[0], lst[1], lst[4] 
     print a 
     print b 
     print c 


a 
b 
e 
one 
two 
five 
1 
2 
5 
>>> 

如果你需要一個更通用的解決方案,你可以在你要訪問的指標迭代,並打印出來:

>>> def print_elements_at_indexs(indexes, lst): 
    for sublst in lst: 
     for index in indexes: 
      print(sublst[index]) 


>>> print_elements_at_indexs([0, 1, 4], list1) 
a 
b 
e 
one 
two 
five 
1 
2 
5 
>>> 
1

的錯誤是在第二循環中:

for num, item in enumerate(list[0, 1, 4]): 

什麼你寫 - list[1, 2, 5]是錯誤的兩個賬戶 - list()是您在上環(不是關鍵重新分配一個保留關鍵字,但你不應該」 t做它,期間:),並且你傳遞了一個錯誤的片斷構造 - 這不是如何選擇這3個成員的語法。另外,這些索引是基於0的 - 第一個元素是0,依此類推。

根據你的方法這裏的修改後的代碼:

list1 = ['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5'] 

for sub_list in list1: 
    for num in (0, 1, 4): 
     print sub_list[num] 

無需使用enumerate(),因爲你不使用它的索引反正。

+0

是的你是正確的這是一種方法,但我把我的列表命名爲'list1'而不是'list'。我已經修正了索引排序。然而,我現在得到的錯誤類型錯誤:'列表'對象不可調用'當我把我的列表項目放在括號內像 –

+0

我已經意識到一個關鍵的錯誤,我最初的理解你的代碼(你正在重新分配'列表'到當地的變種),並編輯了我的答案。最終的循環實際上是下面給出的列表編譯答案的「更長」版本。 – Todor

1

試試這個:

>>> list1 = [['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5']] 
>>> index1 = [1,2,5] 
>>> [j for i in list1 for index,j in enumerate(i) if index+1 in index1] 
['a', 'b', 'e', 'one', 'two', 'five', '1', '2', '5'] 
1

入住這

[v for _list in list1 for i,v in enumerate(_list) if i in [0,1,4]] 
0
list1 = [['a','b','c','d','e'],['one','two','three','four','five'],['1','2','3','4','5']] 

for number, lst in enumerate(list1): 
    for num, item in enumerate(lst): 
     if num in [0,1,4]: 
      print item 

注意:儘量避免內置的關鍵字在你的程序變量。

相關問題