2011-05-14 41 views
2

我剛剛閱讀了關於python的演示文稿,我注意到作者錯過了要迭代的項目的元組的圓括號,它讓我感到我可能傾向於將它們留下。對PEP-8的閱讀沒有給出明確的答案,我不想在舊的「明顯優於暗含」的情況下「退縮」,而沒有進行一些討論;所以...用於在Python中迭代少量項目的最佳風格?

你更喜歡哪一種?你認爲在這兩個等價語句中哪一個更加pythonic(限制討論在它的陳述中的使用)。

>>> # Some setup 
>>> x, y, z = 1, 'Hi', True 
>>> 
>>> #Style 1: Implicit tuple 
>>> for i in x, y, z: 
    print(i) 


1 
Hi 
True 
>>> # Style 2: Explicit tuple 
>>> for i in (x, y, z): 
    print(i) 


1 
Hi 
True 
>>> 
+1

什麼也讓我吃驚的是,我以前從來沒有想過的選擇嗎? – Paddy3118 2011-05-14 07:03:02

+0

「少量項目」的問題在於腳本修改了一次或兩次之後,您會發現「大量項目」。 – Johnsyweb 2011-05-16 11:28:18

回答

0

我與樣式2去,你可以真正瞭解你迭代的是什麼:

>>> # Style 2: Explicit tuple 
>>> for i in (x, y, z): 
     print(i) 

樣式1似乎有點混亂,我出於某種原因。

0

在這種情況下,顯式優於隱式,元組應該是顯而易見的。

我認爲有更大的魚可以炒:)雖然任何人都會知道你在哪種情況下,這是一個微小的變化。

3

我着重指出兩者都不是。我發現如果將元組分配給描述性變量,代碼可讀性會提高。

例如:

for name in relative_names: 
    print name 

VS

for name in "Tyler", "Robert", "Marla", "Chloe", "Lou": 
    print name 
+1

我注意到你不得不擴大原來的x,y,z來表達你的觀點;-) – Paddy3118 2011-05-14 17:03:57

+0

並不總是如此。如果有人列出了瘦,瘦,胖和肥胖的話,該怎麼辦?迭代肥胖+肥胖可能比爲肥胖+肥胖找到一個好名字更好,指定變量然後循環遍歷新變量 - 當細節不復雜時,知道詳細信息會更有意義,並且它只是爲了使用一次。 – Paddy3118 2011-05-14 17:07:14

+0

我的確擴展了原來的(x,y,z)來表達我的觀點,因爲代碼經常會擴展到一個簡單的(x,y,z)之外,但是如果你沒有編寫複雜或可重用的代碼,建議,這不值得辯論。 – Cryo 2011-05-31 05:15:19

1

我總是喜歡:

>>> # Some setup 
... some_values = 1, 'Hi', True, 
>>> 
>>> # Style 3: named tuple 
... for value in some_values: 
...  print(value) 
... 
1 
Hi 
True 
相關問題