我在某些代碼中遇到了一個錯誤。的(不正確)線是相似的:爲什麼在兩個列表之間使用「和」會給我第二個列表(而不是錯誤)?
[x for x in range(3, 6) and range(0, 10)]
print x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
(寫這句話的正確方法是不是問題的一部分)
想知道什麼someList and someOtherList
呢,我嘗試。這似乎結果永遠只能設置爲傳遞的最後一個參數:
x = range(0,3) # [0, 1, 2]
y = range(3, 10) # [3, 4, 5, 6, 7, 8, 9]
z = range(4, 8) # [4, 5, 6, 7]
print x and y # [3, 4, 5, 6, 7, 8, 9]
print y and x # [0, 1, 2]
print z and y and x # [0, 1, 2]
我會認爲這是能夠寫一些東西,是有用無意的後果,但我真的不看怎麼樣「和」運算符的語義在這裏被應用。
從經驗來看,蟒蛇不會運營商政策適用於那些不支持這些運營商(即它吐出類型錯誤),所以我最好期待上的錯誤和-ING的東西,不應該和-ed。事實上,我沒有得到一個錯誤,告訴我,我錯過了...什麼。
我錯過了什麼?爲什麼list and list
是允許的操作?有沒有什麼「有用的」,可以做到這一點?
這個問題是關於布爾值,但答案適用於任何類型 –
謝謝@TimCastelijns – KidneyChris
我確實認爲鏈接問題可能會提及問題不僅僅是布爾列表(它是任何列表),但我並不是真的在這裏增加很多。很高興結束重複。 – KidneyChris