2016-07-28 3 views
0

私はこれをできる限り明確にしようとしています。私が何かを明確にしなければならないかどうか私に教えてください。リストを参照リストにマッピングする

私は、次の形式でリスト内の変数の長いリストを持っている -

L = ["Fruit", "Transportation", "Housing", "Food", "Education"] 

私はそれに短いリストをマッピングしたいと思います。より短いリストは、長いリストの各変数だけを持ちますが、いくつかの変数はありません。例えば、 -

S = ["Fruit", "Food"] 

私が興味を持っているのは、Lリストにマップされている短いリストのバイナリ値です。一例としてSで

、それは次のようになります。

S = [1, 0, 0, 1, 0] 

私はマップ(S、L)を試みたが、はっきりリストは呼び出すことはできません。

TypeError: 'list' object is not callable 

これを行うにはどうすればよいでしょうか?ありがとうございました!! L内のすべての値を取り、それがS内部に含まれている場合、それは1の値を返し、そして、そうでない場合は、リストの内包表記を使用することにより

答えて

1

、それは0の値を返します。

m = [1 if subval in S else 0 for subval in L] 

結果次のとおりです。

[1, 0, 0, 1, 0] 
+0

ありがとうございました。これは非常にうまくいく。 – achimneyswallow

1

これを試してみてください:

[int(x in S) for x in L] 
+0

ありがとうございます。これは非常にうまくいく。 – achimneyswallow

1

あなたは次のようにPythonのリスト内包表記を使用することができます。

ans=[1 if x in S else 0 for x in L] 
1

私はマップ(S、L)を試みたが、はっきりリストは呼び出すことはできません。

しかし、その方法は以下のとおりです。

>>> map(S.count, L) 
[1, 0, 0, 1, 0] 

(。この1つはそうではありません、あなたはたとえば代わり​​にmap(list(set(S)).count, L)を使用することができれば、Sには重複が存在しないと仮定し)

+0

ありがとうございます。これは本当に涼しいです! – achimneyswallow

関連する問題