如果元组被描述为序列类型,为什么长度为1的元组被视为标量?

时间:2012-04-05 23:10:33

标签: python list operators tuples

我刚刚开始学习Python并且正在解释器中使用in运算符,并发现了一些有趣的东西。为什么这是False

# case 1
>>> [1] in [1,2,3]
False

但这些是True

# case 2
>>> [1] in [[1],2,3]
True

# case 3
>>> (1) in [(1),2,3]
True

# case 4
>>> (1) in [1,2,3]
True

# case 5
>>> 1 in [(1),2,3]
True

我可以理解为什么#1是False,因为[1]是一个列表对象,它不会出现在列表[1,2,3]中。我也明白为什么#2是True。但是,如果元组是不可变列表(正如Norm Matloff在他的tutorial中描述的那样)或者是不可变序列(如TUPLES的Python文档所述),为什么(1)等同于1而不是[1]是{{1}}?

1 个答案:

答案 0 :(得分:7)

括号不是一个元组,一个逗号。

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

所以你(1)的所在地,实际上只意味着1

>>> (1,) in [1,2,3]
False