当我今天阅读Python文档时,我在mutable UDTs上找到Expression lists
,网站上的说明如下:
expression_list ::= expression ( "," expression )* [","]
包含至少一个逗号的表达式列表会产生一个元组。元组的长度是列表中表达式的数量。表达式从左到右进行评估。
只需要创建一个元组(a.k.a.一个单例),就需要尾随逗号;在所有其他情况下它是可选的。没有尾随逗号的单个表达式不会创建元组,而是生成该表达式的值。 (要创建一个空元组,请使用一对空括号:()。)
因为这些示例没有在网站上给出,所以我只是想知道任何人都可以对此进行简要描述,并举例说明其用法。非常感谢。
答案 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)