[英]Python list syntax explanation
我注意到,當我使用python時,我偶爾會出現一個打字錯誤並且有一個看起來類似的定義
L = [1,2,3,]
我的問題是,為什么這不會導致錯誤?
它不會導致錯誤,因為它是一個故意的功能,允許列表和元組使用尾隨逗號。
這對於元組尤其重要,否則很難定義單個元素元組:
>>> (100,) # this is a tuple because of the trailing comma
(100,)
>>> (100) # this is just the value 100
100
它還可以更容易地重新排序或添加元素到長列表。
從Python文檔:
尾隨逗號只需要創建一個元組(也就是單個元素); 在所有其他情況下它是可選的。 沒有尾隨逗號的單個表達式不會創建元組,而是生成該表達式的值。 (要創建一個空元組,請使用一對空括號:()。)
我的問題是,為什么這不會導致錯誤?
尾隨逗號被忽略,因為它很方便:
funcs = [ run,
jump,
# laugh
]
您可以在官方文檔中閱讀更多信息:
Python允許您在列表 , 元組和字典的末尾添加一個尾隨逗號:
[1, 2, 3,]
('a', 'b', 'c',)
d = {
"A": [1, 5],
"B": [6, 7], # last trailing comma is optional but good style
}
有幾個理由允許這樣做。
如果列表,元組或字典的文字值分布在多行中,則更容易添加更多元素,因為您不必記住在上一行中添加逗號。 這些行也可以在編輯器中排序,而不會產生語法錯誤。
意外省略逗號會導致難以診斷的錯誤。 例如:
x = [
"fee",
"fie"
"foo",
"fum"
]
這個列表看起來有四個元素,但它實際上包含三個: "fee"
, "fiefoo"
和"fum"
。 始終添加逗號可避免此錯誤來源。
允許尾隨逗號也可以使編程代碼生成更容易。
做這個
>>> l = 1,2,3,
>>> l
(1, 2, 3)
()
是可選的。 的,
意味着你正在創建一個序列。
觀察這一點
>>> l = 1,
>>> l
(1,)
>>> l = 1
>>> l
1
再次。 的,
意味着它是一個序列。 ()
是可選的。
想到並沒有錯
[ 1, 2, 3, ]
作為列表構造函數[ ]
內的元組1, 2, 3,
。 從基礎元組創建列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.