是否存在基于条件将列表转换为二元决策的非冗长方式? e.g:
patientAge = [19, 15, 13, 21, 37]
# wanted output: [1, 0, 0, 1, 1] # true if >18 otherwise false
# e.g. in matlab simply "patientAge>18"
答案 0 :(得分:3)
只需使用列表理解:
>>> patientAge = [19, 15, 13, 21, 37]
>>> [age > 18 for age in patientAge]
[True, False, False, True, True]
如果你必须有1或0:
>>> [int(age > 18) for age in patientAge]
[1, 0, 0, 1, 1]
答案 1 :(得分:1)
[ v > 18 for v in patientAge ]
patientAge
是numpy.array
),您还可以撰写patientAge > 18
并获取bool numpy.array
答案 2 :(得分:0)
您可以将列表转换为numpy
数组:
>>> patientAge = [19, 15, 13, 21, 37]
>>> patientAge = numpy.array(patientAge)
>>> patientAge>18
array([ True, False, False, True, True], dtype=bool)
>>> _+0 # if you want ints
array([1, 0, 0, 1, 1])
语法很熟悉,因为numpy
(和matplotlib
)当然是基于Matlab。