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

sco*_*awg 1 python tuples list operators

我刚刚开始学习Python,并in在解释器中使用操作员并发现了一些有趣的东西.为什么这样False:

# case 1
>>> [1] in [1,2,3]
False
Run Code Online (Sandbox Code Playgroud)

但这些是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
Run Code Online (Sandbox Code Playgroud)

我可以理解为什么#1是False,因为它[1]是一个列表对象,它不会出现在列表中[1,2,3].我也明白为什么#2是True.但是,如果元组是不可改变的列表(如规范Matloff描述了他们在他的教程),或者是不可变的序列(如元组Python文档说),为什么(1)等同于1代替[1]

Gar*_*tty 7

逗号没有制作元组,逗号就是这样.

>>> (1)
1
>>> (1,)
(1,)
Run Code Online (Sandbox Code Playgroud)

所以你在哪里(1),它实际上只是意味着1.

>>> (1,) in [1,2,3]
False
Run Code Online (Sandbox Code Playgroud)