2016-08-30 10 views
0

私の問題はこれです。 これら二つのリスト番号を含む別のリストにリスト内の対応する項目を印刷

codes = ['a', 'b', 'c', 'a', 'e', 'f', 'g', 'a', 'i', 'j', 'a', 'l'] 
pas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

は、どのように私はすべての「」のコードリスト内の位置を見つけるだろうしています。そして、pasリストに対応する項目を印刷します。 これが出力の内容です。また、.sort()関数を使用してソートする必要があります。

1 
4 
8 
11 

私はこのコードを思いついた。 (それは仕事ではない)

qwer = [i for i,x in enumerate(codes) if x == common] 
qwe = [qwer[i:i+1] for i in range(0, len(qwer), 1)] 
print(pas[qwe]) 

正しい出力を得るにはどうすればよいでしょうか?

+0

は、それらのあなたの 'codes'リスト内の文字列または変数ことになっていますか? – Flippym

答えて

4
>>> pas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 
>>> codes = ['a', 'b', 'c', 'a', 'e', 'f', 'g', 'a', 'i', 'j', 'a', 'l'] 
>>> result = sorted(i for i,j in zip(pas,codes) if j=='a') 
>>> for i in result: 
...  print i 
... 
1 
4 
8 
11 
+0

このコードを新しい行に出力する方法は? –

+0

アイテムを作成して印刷するときに、リストを繰り返し処理するだけです。 –

+0

@WillW、更新。 –

1

これを達成する方法はたくさんあります。あなたの例のリストは以下のとおりです。enumerateを使用して:

>>> codes = ['a', 'b', 'c', 'a', 'e', 'f', 'g', 'a', 'i', 'j', 'a', 'l'] 
>>> pas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

アプローチ1

>>> indices = [pas[i] for i, x in enumerate(codes) if x == "a"] 
indices = [1, 4, 8, 11] 

アプローチ2:使用zip

>>> [p for p, c in zip(pas, codes) if c == 'a'] 
[1, 4, 8, 11] 
0

ちょうどanotheを追加しましたR numpyの使用方法:

import numpy as np 
codes = np.array(['a', 'b', 'c', 'a', 'e', 'f', 'g', 'a', 'i', 'j', 'a', 'l']) 
pas = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]) 

index = np.where(codes=='a') 
values = pas[index] 

In [122]: print(values) 
[ 1 4 8 11] 
0
codes = ['a', 'b', 'c', 'a', 'e', 'f', 'g', 'a', 'i', 'j', 'a', 'l'] 
pas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 

[pas[index] for index, element in enumerate(codes) if element == "a"] 
+2

このコードは問題の解決に役立つかもしれませんが、_why_および/または_how_が質問に答えているとは説明していません。この追加の文脈を提供することは、長期的な教育的価値を大幅に改善するだろう。どのような制限や仮定が適用されるかなど、あなたの答えを解説してください。 –

関連する問題