TypeError: индексы индексов должны быть целыми, а не str Python

list[s] - строка. Почему это не работает?

Появится следующая ошибка:

TypeError: индексы списка должны быть целыми числами, а не str

list = ['abc', 'def']
map_list = []

for s in list:
  t = (list[s], 1)
  map_list.append(t)

Ответ 1

list1 = ['abc', 'def']
list2=[]
for t in list1:
    for h in t:
        list2.append(h)
map_list = []        
for x,y in enumerate(list2):
    map_list.append(x)
print (map_list)

Вывод:

>>> 
[0, 1, 2, 3, 4, 5]
>>> 

Это то, что вы хотите точно.

Если вы не хотите достигнуть каждого элемента, то:

list1 = ['abc', 'def']
map_list=[]
for x,y in enumerate(list1):
    map_list.append(x)
print (map_list)

Вывод:

>>> 
[0, 1]
>>> 

Ответ 2

Когда вы перебираете список, переменная цикла получает фактические элементы списка, а не их индексы. Таким образом, в вашем примере s есть строка (первая abc, затем def).

Похоже, что вы пытаетесь сделать это:

orig_list = ['abc', 'def']
map_list = [(el, 1) for el in orig_list]

Это использует конструкцию Python под названием для понимания списка.

Ответ 3

Не используйте имя list для списка. Я использовал mylist ниже.

for s in mylist:
    t = (mylist[s], 1)

for s in mylist: назначает элементы от mylist до s i.e s принимает значение 'abc' в первой итерации и 'def' во второй итерации. Таким образом, s не может использоваться как индекс в mylist[s].

Вместо этого просто выполните:

for s in lists:
    t = (s, 1)
    map_list.append(t)
print map_list
#[('abc', 1), ('def', 1)]

Ответ 4

это должно быть:

for s in my_list:     # here s is element  of list not index of list
    t = (s, 1)
    map_list.append(t)

Я думаю, что вы хотите:

for i,s in enumerate(my_list):  # here i is the index and s is the respective element
    t = (s, i)
    map_list.append(t)

enumerate укажите индекс и элемент

Примечание: использование списка в качестве имени переменной - плохая практика. его встроенная функция

Ответ 5

for s in list создаст элементы списка, а не их индексы. Таким образом, s будет 'abc' для первого цикла, а затем 'def'. 'abc' может быть только ключом к dict, а не индексом списка.

В строке с t выборка элемента по индексу избыточна в python.