为什么嵌套元组评估为单个元组,但嵌套列表不评估为单个列表

Ube*_*per 0 python list

在python如果我有:

((())) 
Run Code Online (Sandbox Code Playgroud)

或者我有

()
Run Code Online (Sandbox Code Playgroud)

然后 ((())) == ()

if (()):
    # is false
Run Code Online (Sandbox Code Playgroud)

if [[]]:
    # is true
Run Code Online (Sandbox Code Playgroud)

有关元组的特殊之处在于它们给出了与列表相对的行为吗?

Die*_*Epp 5

他们没有.

表达式(())不是嵌套元组,它是由括号括起来的单个元组.如果你想创建一个仅包含元组的元组x,那么语法不是,(x)而是相反(x,).所以嵌套的元组看起来像(((),),).

In [1]: (((),),) == ()
Out[1]: False

In [2]: "x" == ("x")
Out[2]: True

In [3]: "x" == ("x",)
Out[3]: False