TypeError:列表索引必须是整数或切片,而不是str;迭代列表时出错


list1 = ['Ganga', 'Narmada', 'Kaveri', 'Tapi', 'Yamuna']
sum1 = 0
for i in list1:
for j in list1[i]:
sum1 += ord(int(j))
list1.replace(i, sum1)
print(list1)

我想用添加特定字符串的每个字符的ascii值来替换list1的每个字符串。例如,代替"Ganga",我想打印(('G'的ASCII值(+('a'(的ASCII值+('n'(的ASCII+('G'(的ASCII值+('a''(的ASC II值(,从而为每个字符串打印。

我如上所述尝试,但在行中出现错误

对于list1[i]中的j为"TypeError:列表索引必须是整数或切片,而不是str">

我知道为什么会出现错误,但不知道如何解决。谁能帮我解决这个错误吗。

任何形式的帮助都将不胜感激。

提前感谢

如果你想迭代list1中每个字符串的字符,你必须这样做

for string in list1:
for char in string:
...

在您的代码中,i变量将取值'Ganga''Narmada'等。这些确实是而不是索引,您不能执行list1['Ganda']。因此,您的TypeError

因为写for x in xs不会给你索引,而是给xs的项目,例如

for x in ('foo', 'bar', 'baz'):
print(x)

将打印

foo
bar
baz

最新更新