list[s]
- строка. Почему это не работает?
Появится следующая ошибка:
TypeError: индексы списка должны быть целыми числами, а не str
list = ['abc', 'def']
map_list = []
for s in list:
t = (list[s], 1)
map_list.append(t)
list[s]
- строка. Почему это не работает?
Появится следующая ошибка:
TypeError: индексы списка должны быть целыми числами, а не str
list = ['abc', 'def']
map_list = []
for s in list:
t = (list[s], 1)
map_list.append(t)
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]
>>>
Когда вы перебираете список, переменная цикла получает фактические элементы списка, а не их индексы. Таким образом, в вашем примере s
есть строка (первая abc
, затем def
).
Похоже, что вы пытаетесь сделать это:
orig_list = ['abc', 'def']
map_list = [(el, 1) for el in orig_list]
Это использует конструкцию Python под названием для понимания списка.
Не используйте имя 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)]
это должно быть:
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
укажите индекс и элемент
Примечание: использование списка в качестве имени переменной - плохая практика. его встроенная функция
for s in list
создаст элементы списка, а не их индексы. Таким образом, s
будет 'abc'
для первого цикла, а затем
'def'
. 'abc'
может быть только ключом к dict, а не индексом списка.
В строке с t
выборка элемента по индексу избыточна в python.