我是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的第一个实例,运行脚本并获得错误的答案或错误。
有人可以解释为什么会这样,以及是否有更好的方法来获得正确答案?
答案 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的原因。