元组的表示不一致?

时间:2017-11-15 13:28:29

标签: python python-3.x

假设我们做了以下任务:

x = (1, 2, (3, 'John', 4), 'Hi')

为什么x[0:1]给了我(1,)x[0:-1]给了(1, 2, (3, 'John', 4))?为什么(3, 'John', 4)之后没有逗号?

2 个答案:

答案 0 :(得分:4)

当你正在处理一个元组并且只有一个元素时,它会以你的第一个案例(1,)中的逗号结尾。与第二种情况一样(1,2,(3,'John',4))有多个元素,它不以逗号结尾。

答案 1 :(得分:0)

括号不定义元组;逗号做。通常,逗号在元素之间出现,但是1元组需要特殊地设置,因为没有第二个元素为逗号提供中间位置。

仅在必要时使用元组来区分逗号的不同用法以及空元组的特殊情况时才需要括号。

# empty tuple
# There's no such thing syntactically as an empty expression, so
# parentheses can be used.
x = ()

# 1-tuple - the comma signals a tuple is being created; no need for parentheses here, but they can be optionally used.
x = 1,
y = (1,)  # x == y

# n-tuples. A trailing comma is allowed but has no affect.
x = 1,2
y = 1,2,  # x == y