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

时间:2015-08-12 07:11:30

标签: python list

当我今天阅读Python文档时,我在mutable UDTs上找到Expression lists,网站上的说明如下:

  

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

     

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

     

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

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

2 个答案:

答案 0 :(得分:8)

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

  

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

这意味着,如果你有1,2,这将创建一个元组。长度是你有多少物品。

  

仅在创建单个元组时需要尾随逗号(a.k.a. a   单);在所有其他情况下都是可选的。

这意味着如果你想创建一个包含一个项目的元组,你需要在末尾加上一个逗号,如1,,否则:

  

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

所以1没有创建元组,将会发生什么样的快递将被评估。这听起来很明显,但如果你写(1)然后期望它被评估为tupe(在(1)的情况下,它将被评估为整数值{{1},这是有意义的。 }})。

最后

  

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

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

通常的做法是用()包围表达式(特别是在元组的情况下),但这不是必需的 - 虽然有时它有助于提高可读性。 ()1,2相等:

(1,2)

答案 1 :(得分:4)

这谈到了你如何编写元组。

例如,

>>> 1, 2
(1, 2)

是一个双元素元组,

>>> 7*8, 5-6
(56, -1)

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

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

>>> 1,
(1, )

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

>>> 1, 2,
(1, 2)