TypeError:列表索引必须是整数,而不是字符串 - 迭代列表
我想做类似这样的事情:
def create(stuff):
someString = ''
for i in stuff:
someString += stuff[i]
print(someString)
create(['Foo', 'Bar'])
# -> FooBar
我试着把它改成字符串,像这样:
someString += str(stuff[i])
但还是出现了错误。
3 个回答
1
你的问题出在 stuff[i]
这里。i
不是一个整数,它是一个字符串。
>>> x = ['hi', 'bye']
>>> for k in x:
... print k
...
hi
bye
>>>
你可以把它改成下面这样:
def create(stuff):
someString = ''
for i in range(len(stuff)):
someString += stuff[i]
print(someString)
或者:
def create(stuff):
someString = ''
for i in stuff:
someString += i
print(someString)
第一个例子使用了索引,而第二个例子使用了普通的 for
循环。
3
当你使用 for in
循环时,i
的值会是对象本身,而不是它的位置索引。在 Python 中,如果你想通过索引来遍历,可以使用 range
,比如:
someString = ''
for i in range(len(stuff)):
someString += stuff[i]
print(someString)
3
问题出在你访问 stuff
里面的元素的方式上。下面的代码是正确的,接下来的解释会帮助你理解:
def create(stuff):
someString = ''
for element in stuff:
someString += element
print(someString)
在使用 Python 的 for
语句时,跟 C/C++/Java 等语言的 for
循环不同,你不需要使用索引。所以,当你遍历一个列表(或者其他任何可迭代的东西)时,比如 for i in ['a', 'b', 'c']
,i
的值会是可迭代对象中的实际值。例如,在第一次循环中,i
的值会是 'a'
,而不是 0
(也就是第 0 个索引的值)。