2017-05-17 46 views
0

我是python的新手。試圖學習如何訪問列表中的元組內的列表。我的清單是:如何訪問python列表中的元組內的列表

holidays = [(0,), 
(1, [2, 16]), 
(2, [20]), 
(4, [14]), 
(5, [29]), 
(7, [4]), 
(9, [4]), 
(11, [23, 24]), 
(12, [25])] 

我想知道以更有效的方式訪問每個元組及其列表的最佳方式。我試着使用:

for i, tuples in enumerate(holidays): 
    for list in tuples: 
     print list 

,但我得到以下錯誤:

for list in tuples: 
TypeError: 'int' object is not iterable 

幫助將非常感激。

+1

你的第一個元素是'0'不是一個元組,一'int'不可迭代 –

+0

第一個元素是一個元組。它被某人編輯 – charsi

回答

1

您需要刪除我的第一個for循環:

for tuples in enumerate(holidays): 
    for list in tuples: 
     print list 
+0

啊..謝謝!現在試圖找到每個元組和具體列表。你能夠把你的洞察力呢? – charsi

+0

你是什麼意思,準確地提供一個例子 –

0

您的第一個元素0更改爲(0),此外,刪除「我是從你的for循環,通過斯塔夫羅斯爲告知,它將工作。

holidays = [([0]), 
(1, [2, 16]), 
(2, [20]), 
(4, [14]), 
(5, [29]), 
(7, [4]), 
(9, [4]), 
(11, [23, 24]), 
(12, [25])] 

元組枚舉(節假日除外): 列表中的元組: 打印列表

+0

你已經看到我的答案,並且你提出同樣的事情,只需點擊+1箭頭,不要發佈重複的答案 –

+0

不得不提及數據集中的變化。另外,我不能投票,否則我會。 – BikerDude

+0

基本上你可以投票,但它不是種子,直到你有名譽 –

0

那麼,你的假期名單是不一致的:第一項是一個整數(0),其他是元組。

holidays = [0, # <- integer 
    (1, [2, 16]), 
    (2, [20]), 
    (4, [14]), 
    (5, [29]), 
    (7, [4]), 
    (9, [4]), 
    (11, [23, 24]), 
    (12, [25])] 

這裏是一個可能的循環:

for entry in holidays: 
    if entry == 0: 
     continue # don't know what to do with zero 
    month, days = entry 
    print(month, days) 

我們使用unpaking提取個月。 請參閱Python教程中的Tuples and Sequences

+0

我也將0初始化爲(0,)元組。冉你的建議的代碼,它會給出以下錯誤:月,天=條目 ValueError:需要多個值1來解包 – charsi

1

短版

[y for x in holidays if isinstance(x, tuple) for y in x if isinstance(y, list)]

您不能做。在LOOP上一個整數,這就是爲什麼程序評級機構

+0

謝謝。如果你能解釋這個 – charsi

+1

中真正發生了什麼,我會用列表理解來列表。您可以嘗試[x * x for x在範圍(10)]中使所有x個方格從0到9. 然後在第一個循環中,我將所有元素作爲假期中的元組實例:'for x in holidays if isinstance(x,tuple)' 然後,對於每個找到的x元素,我得到了列表實例的元素。:'如果是isinstance(y,list)',則爲x中的y – Pablo