我的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
我的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
1条答案
按热度按时间ymdaylpp1#
当你迭代某个对象时,迭代变量被赋给可迭代对象中的元素,而不是索引,因此你不需要使用下标
[]
操作符来引用元素;直接使用它们即可:使用更具描述性的变量名可以帮助您跟踪在每个循环中迭代的内容:
如果你确实想按索引迭代,你可以构建一个
range
,它包含每个可迭代对象的len
,然后迭代范围内的整数(这将对应于你从中得到len
的可迭代对象的索引):但是,在这里这样做没有任何好处,而且只会使代码更难阅读。大多数时候,您希望直接迭代元素。