我试图尽可能清楚地说明这一点。如果我要澄清任何事情,请告诉我。
我在列表中有一长串变量列表,格式如下 -
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
这样做的好方法是什么?谢谢!!
答案 0 :(得分:1)
通过使用列出L
中每个值的列表推导,如果它包含在S
中,则返回值1
,如果不是,则返回值{ 0
:
m = [1 if subval in S else 0 for subval in L]
结果是:
[1, 0, 0, 1, 0]
答案 1 :(得分:1)
试试这个:
[int(x in S) for x in L]
答案 2 :(得分:1)
你可以使用python的列表理解如下:
ans=[1 if x in S else 0 for x in L]
答案 3 :(得分:1)
我尝试了地图(S,L),但显然列表不可调用。
但它的方法是:
>>> map(S.count, L)
[1, 0, 0, 1, 0]
(这个假设在S中没有重复。如果不是这样,你可以改为使用map(list(set(S)).count, L)
。)