2017-03-29 8 views
1

list1とlist2の2つのリストを持ち、あるエントリの位置を別のものの中で探すことができる方法はありますか?すなわち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"] 

私の目的は、ユーザが入力ハローコンピュータをした場合、プログラムはそのようにlist_one

で文字のエントリに対応する数の集合に変換する単語を入力できるようにすることです戻ってくる85121215(エントリの位置である)

は、リスト内の項目の位置を見上げるこの

+3

あなたの宿題のようです。 – RaminNietzsche

+0

list1に重複している文字で何をしたいですか?重複がない場合、または最初のオカレンスの場所を使用したい場合は、辞書を使用できます。 –

答えて

5

を行うための可能な方法は非常に効率的な操作ではありませんがあります。 dictはこの種のタスクのためのより良いデータ構造です。

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

あなたlist_oneはアルファベット順に、それは組み込み関数ordを使用して作業何かを得るために、おそらくより良いと簡単です、常にちょうどアルファベットの場合。

+0

ありがとう!それは今 –

0

x.index(i)は、リスト上のリストの要素ix

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

利用.index()の位置を返します:あなたは繰り返すことができ

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

は、リストを考えた:

>>> 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] 

勝利の答えはよりエレガントです!

0

@ wimの答えに加えて、簡単な理解で行うことができます。

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

ありがとう!これは私にも役立ちます。私は出力を変数として保存する方法を探していましたが、それはあなたのことです。ありがとう! –

関連する問題