簡體   English   中英

Python列表語法說明

[英]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在列表和元組的末尾允許使用逗號?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM