输出字符串中的format()

时间:2015-07-11 14:26:48

标签: python string string-formatting

我有一个代码:

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编程的新手,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:7)

是的,在Python中,序列索引从0开始。

由于您的str.format()参数只有两个值,因此没有值可以使用索引2进行插值,只有01,因此IndexError是抛出。

通常,对于任何元素序列,索引从0len(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开头。