差异访问元组和列表的元素

Lar*_*gas 3 python tuples list

为什么t在制作它时会访问元素tuple

>>> t = [('ID','int')]
>>> for r in t:
print r


('ID', 'int')


t = (('ID','int'))
>>> for r in t:
print r


ID
int
Run Code Online (Sandbox Code Playgroud)

我希望这与第一个例子完全一样!尽管使用多个元素填充元组,行为也会发生变化.

>>> t = (('ID','int'),('DEF','str'))
>>> for r in t:
print r


('ID', 'int')
('DEF', 'str')
>>> t = [('ID','int'),('DEF','str')]
>>> for r in t:
print r


('ID', 'int')
('DEF', 'str')
Run Code Online (Sandbox Code Playgroud)

有人能简单解释一下吗?我正在运行python 2.7

Bil*_*nch 14

(('a', 'b'))是一样的('a', 'b').

你真的想要 (('a', 'b'),)

这在此处记录:

5.13.表达列表

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

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

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

请记住,没有这个限制,表达式(3) * (4)应该是两个数字或两个元组的乘法吗?大多数用户都希望这是数字的乘法.