Skip to main content
 首页 » 编程设计

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

2025年05月04日15jyk

我刚开始学习 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 中描述的那样)或者是不可变的序列(如元组的 Python 文档所说),为什么 (1) 等同于 1 而不是 [1]?

请您参考如下方法:

方括号不能组成元组,逗号可以。

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

所以当你执行 (1) 时,它实际上只是意味着 1。

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