在Python中,我不能使用for循环来索引字符串中的某个字符,这会导致索引错误

ejk8hzay  于 2023-01-03  发布在  Python
关注(0)|答案(1)|浏览(206)

我的Python代码:

x = ["abc", "e", "i"]

for i in x:
    for j in x[i]:
        print(x[i][j])

我收到以下错误:

print(x[i][j])
TypeError: list indices must be integers or slices, not str

所以本质上问题在于for j in x[i]:线
预期输出:

a
b
c
e
i
ymdaylpp

ymdaylpp1#

当你迭代某个对象时,迭代变量被赋给可迭代对象中的元素,而不是索引,因此你不需要使用下标[]操作符来引用元素;直接使用它们即可:

x = ["abc", "e", "i"]

for i in x:
    for j in i:
        print(j)

使用更具描述性的变量名可以帮助您跟踪在每个循环中迭代的内容:

for word in x:
    for letter in word:
        print(letter)

如果你确实想按索引迭代,你可以构建一个range,它包含每个可迭代对象的len,然后迭代范围内的整数(这将对应于你从中得到len的可迭代对象的索引):

for i in range(len(x)):
    for j in range(len(x[i])):
        print(x[i][j])

但是,在这里这样做没有任何好处,而且只会使代码更难阅读。大多数时候,您希望直接迭代元素。

相关问题