以下是我的代码:
data = raw_input("Please enter your particulars in the format of name/age/address ->")
pro = data.split("/")
name = pro.pop(0)
age = pro.pop(1)
address = pro.pop()
print name
print age
print address
我理解列表的索引是0,1,2,但是当我弹出年龄(列表中应该是索引1)时,它会在打印时给我一个地址。同样地址,它给了我年龄。有人能告诉我这个世界上有什么问题吗?
答案 0 :(得分:6)
这是因为当你已经弹出索引0时,其他项目向左移动1,因此索引1移动为0。
所以你必须这样做 -
name = pro[0]
age = pro[1]
address = pro[2]
答案 1 :(得分:3)
最初,列表是这样的:
name age address
# 0 1 2
age
位于索引1
。但是,在您弹出name
后,它就会
age address
# 0 1
age
现在位于索引0
。
答案 2 :(得分:0)
如前所述,pop()
完全没必要。但是,了解使用它时发生的情况非常重要。
调用pop()
会从列表中删除并返回给定索引的项目。因此,一旦弹出第一个项目(在索引0处),新的第一个项目就是您之后的下一个项目(索引为1的项目)。
如果您绝对想使用pop()
,则以下工作(但不推荐):
>>> name = pro.pop(0)
>>> age = pro.pop(0)
>>> address = pro.pop(0)
如果您要打印pro
,则会看到以下内容:
>>> print pro
[]
是的,一个空列表(已将所有元素“弹出”)。