Python列表语法说明

时间:2012-02-22 21:13:28

标签: python python-3.x

我注意到当我使用python时,我偶尔会出现一个打字错误并且有一个类似于

的定义
L = [1,2,3,]

我的问题是,为什么这不会导致错误?

5 个答案:

答案 0 :(得分:8)

它不会导致错误,因为它是一个故意的功能,允许列表和元组使用尾随逗号。

这对于元组尤其重要,否则很难定义单个元素元组:

>>> (100,)   # this is a tuple because of the trailing comma
(100,)
>>> (100)    # this is just the value 100
100

它还可以更容易地重新排序或添加元素到长列表。

答案 1 :(得分:4)

来自Python文档:

  

只需要创建一个元组(a.k.a.一个单例),就需要尾随逗号;在所有其他情况下它是可选的。没有尾随逗号的单个表达式不会创建元组,而是生成该表达式的值。 (要创建一个空元组,请使用一对空括号:()。)

答案 2 :(得分:4)

  

我的问题是,为什么这不会导致错误?

尾随逗号被忽略,因为它很方便:

funcs = [ run,
          jump,
          # laugh
        ]

答案 3 :(得分:3)

您可以在官方文档中了解更多信息:

Why does Python allow commas at the end of lists and tuples?

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"。始终添加逗号可以避免此错误来源。

允许尾随逗号也可以使程序代码生成更容易。

答案 4 :(得分:1)

这样做

>>> l = 1,2,3,
>>> l
(1, 2, 3)

()是可选的。 ,表示您正在创建序列。

观察此

>>> l = 1,
>>> l
(1,)
>>> l = 1
>>> l
1

再次。 ,表示它是一个序列。 ()是可选的。

想到

并没有错
[ 1, 2, 3, ]

作为列表构造函数1, 2, 3,中的元组[ ]。从基础元组创建列表。