python:根据条件将列表转换为二进制决策

时间:2017-09-22 11:10:05

标签: python

是否存在基于条件将列表转换为二元决策的非冗长方式? 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"

3 个答案:

答案 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 ]
  • 如果使用numpy(假设patientAgenumpy.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。