繁体   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