为什么在t
成为tuple
时访问>>> t = [('ID','int')]
>>> for r in t:
print r
('ID', 'int')
t = (('ID','int'))
>>> for r in t:
print r
ID
int
的元素会有这种差异?
>>> 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')
我希望这与第一个例子完全一样!尽管使用多个元素填充元组,行为也会发生变化。
{{1}}
有人可以简短解释一下吗?我正在运行python 2.7
答案 0 :(得分:14)
(('a', 'b'))
与('a', 'b')
相同。
您实际上想要(('a', 'b'),)
这里记录在案:
expression_list ::= expression ( "," expression )* [","]
包含至少一个逗号的表达式列表会产生一个元组。元组的长度是列表中表达式的数量。表达式从左到右进行评估。
只需要创建一个元组(a.k.a.一个单例),就需要尾随逗号;在所有其他情况下它是可选的。没有尾随逗号的单个表达式不会创建元组,而是生成该表达式的值。 (要创建一个空元组,请使用一对空括号:()。)
请记住,没有这个限制,表达式(3) * (4)
应该是两个数字或两个元组的乘法吗?大多数用户都希望这是数字的乘法。
答案 1 :(得分:4)
t = [('ID','int')]
是列表中的元组。
t = (('ID','int'))
是一个带有括号的元组。
t = ('ID','int'),
是元组中的元组。
,
制作元组!只需要一个元组周围的括号来避免歧义。