我有一个代码:
print "{0} is my {1}".format("Bruce","name")
我得到了预期的输出:
Bruce is my name
现在,我将代码修改为:
print "{1} is my {2}".format("Bruce","name")
我得到了IndexError: tuple index out of range
。
那么,我是否总是应该从0
开始编号?
我是Python编程的新手,所以任何帮助都会受到赞赏。
答案 0 :(得分:7)
是的,在Python中,序列索引从0
开始。
由于您的str.format()
参数只有两个值,因此没有值可以使用索引2
进行插值,只有0
和1
,因此IndexError
是抛出。
通常,对于任何元素序列,索引从0
到len(sequence) - 1
。对于包含2个元素的序列,最后一个索引为1
,长度为42,最后一个元素在索引41
处找到,等等。
另请参阅Why Python uses 0-based indexing,这是一篇博客文章,其中Python的创建者Guido van Rossum解释了为什么Python索引从0开始,而不是1。
请注意,您没有 对插槽进行编号(除非您遇到Python 2.6或3.0)。您可以省略数字,Python会自动为您编号:
print "{} is my {}".format("Bruce", "name")
答案 1 :(得分:0)
在python中,假设我们有一个双字列表lst = ["hello", "world"]
,我们执行以下命令:
print lst[0] # calling on the 0ith element
>> 'hello' # we get the first word from the list
print lst[1] # calling on the 1st element
>> 'world' # we get the second word from the list
print lst[2] # calling on the 2nd element
>>IndexError: list index out of range # we get an error because it does not exist
然而.... 请注意:
print(len(lst))
>> 2
列出项目列表以0开头,但当计算项目数量(在本例中为“单词”)时,它以1开头。