python中的索引混淆

时间:2014-04-07 14:11:25

标签: python

大家好,我是python开发的新手。我写了一个示例代码:

mylist = ['something','baby','car']
for i,n in mylist:
    mylist[i] = mylist[i]+1
    print i,n

我知道i是列表中的索引,因此它将执行列表中元素的数量。但是当我执行脚本时,我得到类型错误...

在此代码中,列表的索引被一个... ...因此预期的结果是。

0 something
1 baby
2 car

而不是我有一个类型错误..请帮助我解决这个问题。任何帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:3)

非常接近,只是缺少enumerate -

for i,n in enumerate(mylist):

但是,上面的代码将尝试向字符串添加整数;这将引发新的错误。如果你试图推回元素,你会想要mylist[i] = mylist[i+1](注意你必须有一个案例来捕捉最后一个元素)

答案 1 :(得分:0)

这:

mylist = ['something','baby','car']
for i,n in mylist:
    mylist[i] = mylist[i]+1
    print i,n

在第二行引发ValueError(“解压缩的值太多”)。

如果您只是在第二行添加enumate,即for i,n in enumerate(mylist):,那么您会在下一行获得TypeError,因为您正在尝试添加字符串({{1 }}和一个整数(mylist[i])。关键是:你要增加的是i,而不是i(这与mylist[i] fwiw相同),所以它应该是:

n

但是你不必通过这样的复杂来打印出“index + 1:index at index + 1”,你只需要将for i, n in enumerate(mylist): i = i + 1 print i, n 参数传递给start

enumerate