2つのリストaとbに対して、両方に表示される値のインデックスを取得するにはどうすればよいですか?例えば、Pythonで2つのリストを比較し、一致した値のインデックスを返す
a = [1, 2, 3, 4, 5]
b = [9, 7, 6, 5, 1, 0]
return_indices_of_a(a, b)
は(a[0],a[4]) = (1,5)
で、[0,4]
を返します。
2つのリストaとbに対して、両方に表示される値のインデックスを取得するにはどうすればよいですか?例えば、Pythonで2つのリストを比較し、一致した値のインデックスを返す
a = [1, 2, 3, 4, 5]
b = [9, 7, 6, 5, 1, 0]
return_indices_of_a(a, b)
は(a[0],a[4]) = (1,5)
で、[0,4]
を返します。
b
をset
にするのが最も良い方法は、メンバーシップの確認だけであるためです。大きなリストでは
>>> a = [1, 2, 3, 4, 5]
>>> b = set([9, 7, 6, 5, 1, 0])
>>> [i for i, item in enumerate(a) if item in b]
[0, 4]
ありがとう!この場合、「a = [1、2、9、8]」と「b = [1,9,1]」(bはaのサブセット)で、目的の結果は「[0,2,0 ] '(bの各値に一致するインデックス)?セットをbにすると、2番目の '1'のインデックスとインデックスの順序が失われます。 – user1342516
その場合、 '[0、2、0、1、2]'などのようなものではないでしょうか? ( 'b 'のすべての項目が両方のリストにあるので) – jamylak
私は明確ではありません...この場合に必要な結果のインデックスは' array(a)[indices] = b'を与えます。私は質問を編集しました。多分もっと明確な記述かもしれません。 – user1342516
def return_indices_of_a(a, b):
b_set = set(b)
return [i for i, v in enumerate(a) if v in b_set]
これは助けになることがあります。
for item in a:
index.append(bisect.bisect(b,item))
idx = np.unique(index).tolist()
はnumpyのをインポートするようにしてください。
[Python:リストの交差点を見つける方法](http://stackoverflow.com/questions/3697432/python-how-to-find-list-intersection) – ChristopheD
私はこの質問は考えませんそれが類似しているかもしれないが、その複製。 – jamylak