理解元组计算

understanding a tuple calculation

我是 Python 初学者,目前正在使用它。在大多数情况下,我理解 tuples 但有一件事让我感到困惑。我正在关注的例子是

print 'Number of animals in the new zoo is', \
    len(new_zoo)-1+len(new_zoo[2])

我知道我在 tuple 中有一个 tuple 但我不明白为什么我需要使用 -1,我已经摆脱了 -1 并尝试指定不同的参数对于 new_zoo、运行 脚本的第一个实例,得到了不正确的答案或错误。

有人可以解释为什么会这样吗?是否有更好的方法来获得正确答案?

是否使用-1完全取决于元组models.

如果元组包含 N 个元素,但 N - 1 个元素是动物,而一个额外的元素是另一个动物元组,您不想将该嵌套元组本身算作动物,因此您减去一个。

因此元组 ('zebra', 'monkey', ('lion', 'tiger', 'puma'), 'giraffe') 包含 6 只动物,而不是 4 或 7(外部元组的长度或外部元组的长度加上索引 2 处的元组):

>>> new_zoo = ('zebra', 'monkey', ('lion', 'tiger', 'puma'), 'giraffe')
>>> len(new_zoo)
4
>>> len(new_zoo[2])
3
>>> len(new_zoo) + len(new_zoo[2])
7
>>> len(new_zoo) - 1 + len(new_zoo[2])
6

此计算需要知道元组中的内容,不能推广到 Python 中的所有元组。

首先,书中指定的反斜杠在Python 3.4 上是不需要的,如果您还没有注意到的话。 len(new_zoo) = 3(猴子、骆驼和动物园是 3 个项目)- 1 给我们 2,这是 new_zoo 元组中动物的数量。 len(new_zoo[2]) = 3 因为元组中的第三项是动物园,其中包含 3 只动物(python、大象和企鹅)。 new_zoo 元组中的第三项是嵌套元组,因此:

len(new_zoo)-1+len(new_zoo[2]) = 2 + 3 = 5

这就是你需要减去 1 的原因。