list[s]
est une chaîne. Pourquoi ça ne marche pas?
L'erreur suivante apparaît:
TypeError: les index de la liste doivent être des entiers et non des 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)
Sortie:
>>>
[0, 1, 2, 3, 4, 5]
>>>
C'est ce que tu veux exactement.
Si vous ne voulez pas atteindre chaque élément, alors:
list1 = ['abc', 'def']
map_list=[]
for x,y in enumerate(list1):
map_list.append(x)
print (map_list)
Sortie:
>>>
[0, 1]
>>>
Lorsque vous parcourez une liste, la variable de boucle reçoit les éléments de la liste, et non leurs index. Ainsi, dans votre exemple, s
est une chaîne (d'abord abc
, puis def
).
Cela ressemble à ce que vous essayez de faire est essentiellement ceci:
orig_list = ['abc', 'def']
map_list = [(el, 1) for el in orig_list]
Ceci utilise une construction Python appelée list comprehension .
N'utilisez pas le nom list
pour une liste. J'ai utilisé mylist
ci-dessous.
for s in mylist:
t = (mylist[s], 1)
for s in mylist:
assigne des éléments de mylist
à s
i.e s
prend la valeur 'abc' dans la première itération et 'def' dans la deuxième itération. Ainsi, s
ne peut pas être utilisé comme index dans mylist[s]
.
Au lieu de cela, faites simplement:
for s in lists:
t = (s, 1)
map_list.append(t)
print map_list
#[('abc', 1), ('def', 1)]
cA devrait etre:
for s in my_list: # here s is element of list not index of list
t = (s, 1)
map_list.append(t)
je pense que tu veux:
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
donne l'index et l'élément
Remarque: utiliser list comme nom de variable est une mauvaise pratique. sa fonction intégrée
for s in list
produira les éléments de la liste et non leurs index. Donc, s
sera 'abc'
pour la première boucle, puis 'def'
. 'abc'
ne peut être qu'une clé d'un dict, pas un index de liste.
Dans la ligne avec t
, récupérer l'élément par index est redondant en python.