我对元组符号感到有些困惑。元组中的每个元素都被视为元组或元素的任何类型吗?
例如,对于元组t = (1,2,3,4)
,1 in t
为True
,这意味着int 1
位于元组t
中。
但是,如果我评估t[0:1]
,我们会得到元组 (1,)
。
更令人困惑的是(1,) in t
是False
。
这里发生了什么?这是什么;是t
元组或整数的元素吗?
答案 0 :(得分:6)
不,他们不是。
但切片[0:1]
将始终为您提供迭代的子集。如果您只想获取元素,请执行以下操作:t[0]
。这是一个整数,而不是元组。
答案 1 :(得分:0)
元组内的项可以是元组或其他数据类型。您甚至可以混合元组中包含的项目类型。
当您使用t[0:1]
进行切片时,这会为您提供正在切片的对象的一部分。 read the docs
另一方面,您可以通过使用t[0]
建立索引来访问元组内的项目。 more docs
您可以检查对象类型:
t = (1,2,3,4)
type(t)
Out[12]: tuple
type(t[1])
Out[13]: int
type(t[:1])
Out[14]: tuple
t2 = ('a',1, (0,1))
for item in t2:
print(type(item))
<class 'str'>
<class 'int'>
<class 'tuple'>