如何理解Python中的表达式列表

Goi*_*Way 9 python list

当我今天阅读Python文档时,我发现Expression listsPython文档中,网站上的描述如下:

expression_list ::= expression ( "," expression )* [","]

包含至少一个逗号的表达式列表产生一个元组.元组的长度是列表中表达式的数量.表达式从左到右进行评估.

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

因为这些示例没有在网站上给出,所以我只是想知道任何人都可以对此进行简要描述,并举例说明其用法.非常感谢.

Bur*_*lid 8

以下是一些示例,可帮助您了解发生的情况:

包含至少一个逗号的表达式列表产生一个元组.

这意味着,如果你有1,2,这将创建一个元组.长度是您拥有的物品数量.

尾随逗号只需要创建一个元组(也就是单个元素); 在所有其他情况下它是可选的.

这意味着如果你想创建一个带有一个项目的元组,你需要在最后有一个逗号,如下所示1,,否则:

没有尾随逗号的单个表达式不会创建元组,而是生成该表达式的值.

所以1不是创建一个元组,将会发生什么样的快递将被评估.这听起来像是一个明显的观点,但是如果你编写(1)它然后期望它被评估为tupe(在这种情况下(1),它将被评估为整数值1)是有意义的.

最后

(要创建一个空元组,请使用一对空括号:().)

如果由于某种原因您想要将空元组创建为表达式,请使用以下特殊语法 ()

使用()包围表达式(特别是在元组的情况下)是一种常见的做法,但这不是必需的 - 尽管有时它有助于提高可读性. 1,2并且(1,2)是平等的:

>>> a = 1,2
>>> type(a)
<type 'tuple'>

>>> b = (1,2)
>>> type(b)
<type 'tuple'>

>>> a == b
True
Run Code Online (Sandbox Code Playgroud)


Rem*_*ich 5

这讨论了如何编写元组。

例如,

>>> 1, 2
(1, 2)
Run Code Online (Sandbox Code Playgroud)

是一个二元素元组,原样

>>> 7*8, 5-6
(56, -1)
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,元组通常用括号括起来,但它们是不必要的;除了 0 元素元组,().

单元素元组是另一个例外,因为必须使用逗号:

>>> 1,
(1, )
Run Code Online (Sandbox Code Playgroud)

如果没有逗号,就无法将其与正常数字区分开来1。您也可以在多元素元组后添加一个额外的逗号,但在这种情况下它不会做任何事情:

>>> 1, 2,
(1, 2)
Run Code Online (Sandbox Code Playgroud)