2017-03-29 1 views
1

Existe-t-il un moyen d'avoir deux listes nommées list1 et list2 et de pouvoir rechercher la position d'une entrée dans une autre. à savoirtrouver un élément d'une liste dans une autre liste en python

list_one = ["0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] 

list_two = ["h","e","l","l","o"] 

mon but est de permettre à l'utilisateur de saisir un mot que le programme convertit alors en un ensemble de nombres correspondant aux entrées de lettres dans list_one

donc si l'utilisateur a fait entrée bonjour l'ordinateur reviendrait 85121215 (étant la position des entrées)

est-il un moyen possible de le faire

+3

Il ressemble à vos devoirs! – RaminNietzsche

+0

Que voulez-vous faire avec les lettres qui sont dupliquées dans list1? S'il n'y a pas de duplication ou si vous voulez simplement utiliser l'emplacement de la première occurrence, vous pouvez utiliser un dictionnaire. –

Répondre

5

vous la position d'un élément dans une liste n'est pas une opération très efficace. Une dict est une meilleure structure de données pour ce type de tâche.

>>> d = {k:v for v,k in enumerate(list_one)} 
>>> print(*(d[k] for k in list_two)) 
8 5 12 12 15 

Si votre list_one est toujours juste l'alphabet, par ordre alphabétique, il est probablement mieux et plus simple d'obtenir quelque chose de travail en utilisant la fonction builtin ord.

+0

merci pour cela! cela fonctionne maintenant –

0

le x.index(i) retourne la position de l'élément i de la liste x

print("".join([str(list_one.index(i)) for i in list_two])) 
85121215 
0

Utilisation .index() sur une liste:

list_one = ["0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] 

string = "hello" 
positions = [list_one.index(c) for c in string] 
print(positions) 
# [8, 5, 12, 12, 15] 
0

vous pouvez itérer pensé la liste:

>>> for i in range(len(list_two)): 
...  for j in range(len(list_one)): 
...    if list_two[i]==list_one[j]: 
...      list_3.append(j) 
>>> list_3 
[8, 5, 12, 12, 15] 

mais le La réponse de Win est plus élégante!

0

Ajouter à la réponse de @ wim, pourrait être fait avec une compréhension simple.

>>> [list_one.index(x) for x in list_two] 
[8, 5, 12, 12, 15] 
+0

merci! Cela m'aide aussi. Je cherchais un moyen de stocker la sortie en tant que variable et la vôtre le fait. Merci! –