2016-12-31 3 views
-2

たとえば、このリストが与えられた場合:(「intensity_array」と述べた)文字列が存在する複数のポイントを抽出するために、Pythonのリストをどのようにインデックスできますか?

['High', 'Moderate', 'Moderate', 'High', 'Moderate', 'Moderate', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate'] 

私は(「ハイ」)関数intensity_array.indexを使用する場合、出力は0となる。これは、主要な位置0に間違っていません、値が高い。しかし、リスト内に値が「高」である他の場所があります。

リストからポジション番号を抽出するにはどうすればいいですか:0,3,6,7,8,9,10,11,12,13,14。コード内で後で使用できるようにするには?

感謝:)

(この質問が重複していない、それは前に頼まれていますが、質問の他のすべてのインスタンスは、実際には完全に質問に答えていません。。)

注:外付けを使用しませんまたは追加のモジュール。

+1

複製に異議を申し立てたい場合は、**あなたの質問に完全に答えない理由を述べる必要があります。彼らは非常によく似ていて、答えはあなたの場合でもうまくいくはずです。 – MSeifert

答えて

1

リストの理解

[i for i, x in enumerate(your_array) if x == 'High'] 
+0

これは何を出力しますか?私は自分のコードに入れても何も得られません。 – Alex

+0

この特定の質問には、これがどのように機能するかが当てはまります: – Alex

0

これはそれを行うための一つの方法である:

high_indices = [i for i, x in enumerate(intensity_array) if x == 'High'] 
print(high_indices) 

あなたはインデックスを複数回照会したい場合は、辞書にそれらを格納するためには良い考えかもしれ:

from collections import defaultdict 

indices = defaultdict(list) 
for index, name in enumerate(intensity_array): 
    indices[name].append(index) 

print(indices['High']) 
print(indices['Moderate']) 

この方法では、リスト上で1回の反復しか必要とせず、残りの検索は高速になります。

0

enumerateはこのために役立ちます。

def get_positions(iterable, item): 
    """Get the indices of the given iterable where item occurs""" 
    positions = [] 
    for idx, x in enumerate(iterable): 
     if x == item: 
      positions.append(idx) 
    return positions 
0
from collections import defaultdict 
d = defaultdict(list) 
l = ['High', 'Moderate', 'Moderate', 'High', 'Moderate', 'Moderate', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate'] 
for index, value in enumerate(l): 
    d[value].append(index) 

アウト:

defaultdict(list, 
      {'High': [0, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14], 
      'Moderate': [1, 2, 4, 5, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]}) 

NOライブラリのバージョン:

d = {} 
l = ['High', 'Moderate', 'Moderate', 'High', 'Moderate', 'Moderate', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'High', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate', 'Moderate'] 
for index,value in enumerate(l): 
    d.setdefault(value,[]).append(index) 

アウト:

{'High': [0, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14], 
'Moderate': [1, 2, 4, 5, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]} 
+0

質問には、追加モジュールを使用しないことが記載されています。 – Alex

+0

@Alex私は彼がこの状態を更新する前に私は答えました。 –

関連する問題