无法理解一些python元组语法

时间:2014-07-18 02:26:18

标签: python python-2.7 syntax tuples

我今天开始学习python并发现了这个非常好的代码可视化工具pythontutor.com,问题是我还没有完全了解示例代码的一些语法。

def listSum(numbers):
    if not numbers:
        return 0
    else:
        (f, rest) = numbers
        return f + listSum(rest)

    myList = (1, (2, (3, None)))
    total = listSum(myList)

(f, rest) = numbers的含义是什么?

3 个答案:

答案 0 :(得分:3)

元组 解包

以这种方式使用时,元组中需要有2个项目。或多或少会导致异常,如下所示。

>>> numbers = (1, 2, 3, 4, 5)
>>> (f, rest) = numbers
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
>>> numbers = (1, 2)
>>> (f, rest) = numbers
>>> print f
1
>>> print rest
2
>>> numbers = (1)
>>> (f, rest) = numbers
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> numbers = (1,)
>>> (f, rest) = numbers
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack

请注意,(1)(1, )在语法上是不同的,只有后者是一个元组。

有关详细信息,请参阅Tuples and Sequences上的 Python文档

答案 1 :(得分:3)

(f, rest) = numbers

解压缩元组。也就是说,它将两个值存储在数字中并分别存储在f和rest中。请注意,解包的变量数必须与元组中的值数相同,否则将抛出异常。

答案 2 :(得分:0)

Tupple是一种数据结构,您可以在其中以一个名称存储多个项目。

假设我们有一个带有两个项目的tupple(t)。

然后t [0] = first_item并且t [1] = sencond_item

访问tupple项目的另一种方法是:

(f,休息)=数字

在此语法中,数字(tupple)必须只有2个项目,否则它是一个例外

f =数字[0] rest = numbers [1]