TypeError:列表索引必须是整数,而不是字符串 - 迭代列表

0 投票
3 回答
1957 浏览
提问于 2025-04-18 04:29

我想做类似这样的事情:

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 个索引的值)。

撰写回答