2016-06-10 63 views
-1

我有一個腳本,基本上返回從一個函數的元組:爲什麼不是包含兩個空列表的元組是一個空元組?

results = some_function() 

然後我檢查,看看是否有任何結果,像這樣:

if results: 
    do_something() 

這將返回True當元組有兩個空列表。當我使用調試模式時,我的results([], [])。運行len(results)產生的長度爲2

有趣的是,如果我做到以下幾點:

results = ([]) 
print(len(results)) 

它打印0。爲什麼添加另一個列表打印2

我應該從生成元組的函數中覆蓋類方法__len__嗎?

+3

'([])'是_not在ALL_一個元組,它是與它周圍的括號寫入一個空列表。如果你想要一個元素元組,可以添加一個逗號:'([],)'。 – RemcoGerlich

+0

@free_mind這是*這種職位的*僞裝規範。請參閱http://stackoverflow.com/questions/linked/12876177。無論如何,作爲一個騙局關閉意味着你的問題是未來讀者查看主要問題的好路標。 –

回答

3

元組由逗號,而不是限定的括號:

>>> results = ([],) 
>>> print(len(results)) 
1 
+2

絕對是正確的答案。 '([])'與'([],)不一樣「+1 –

+0

感謝您的回答,我不知道這一點。 –

相關問題