理解元组计算

时间:2015-03-24 15:07:42

标签: python tuples

我是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的第一个实例,运行脚本并获得错误的答案或错误。

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

2 个答案:

答案 0 :(得分:2)

是否使用-1完全取决于元组模型的内容。

如果元组包含N个元素,但N-1个元素是动物,而另外一个元素是动物的另一个元组,那么您不希望将该嵌套元组计为动物本身,因此您减去一个。< / p>

因此元组('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中的所有元组。

答案 1 :(得分:2)

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

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

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