【发布时间】:2018-06-21 13:30:31
【问题描述】:
众所周知,元组不是用括号定义的,而是用逗号定义的。 Quote from documentation:
一个元组由多个用逗号分隔的值组成
因此:
myVar1 = 'a', 'b', 'c'
type(myVar1)
# Result:
<type 'tuple'>
另一个引人注目的例子是:
myVar2 = ('a')
type(myVar2)
# Result:
<type 'str'>
myVar3 = ('a',)
type(myVar3)
# Result:
<type 'tuple'>
即使是单元素元组也需要逗号,并且总是使用括号以避免混淆。 我的问题是:为什么我们不能在列表推导中省略数组的括号?例如:
myList1 = ['a', 'b']
myList2 = ['c', 'd']
print([(v1,v2) for v1 in myList1 for v2 in myList2])
# Works, result:
[('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')]
print([v1,v2 for v1 in myList1 for v2 in myList2])
# Does not work, result:
SyntaxError: invalid syntax
第二个列表理解不只是下面循环的语法糖,它确实有效吗?
myTuples = []
for v1 in myList1:
for v2 in myList2:
myTuple = v1,v2
myTuples.append(myTuple)
print myTuples
# Result:
[('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd')]
【问题讨论】:
标签: python python-3.x python-2.7 tuples list-comprehension