我一直试图想出一个单行列表解析来执行以下操作:给定一个整数数组和一个整数,调用它int1,我想创建一个只有0和1的新数组,这样如果在原始数组中该位置有一个int1,则新数组为1,否则为0。
有没有办法让True / False为1/0,如C?
array1 = [1,4,2,4,5,6,4,3]
array2 = [x == 4 for x in array1 ]
=> [False, True, False, True, False, False, True, False]
答案 0 :(得分:9)
只需将布尔值转换为int
,使用int
函数,就像这样
array2 = [int(x == 4) for x in array1]
<强>输出强>
[0, 1, 0, 1, 0, 0, 1, 0]
这是有效的,因为在Python中Boolean is a subclass of int
。
答案 1 :(得分:2)
使用条件表达式。 1 if x==4 else 0
或你有什么。
答案 2 :(得分:2)
True
和False
已经按照您希望的方式投放到int
。只需将它们直接转换为int
:
>>> [int(t) for t in (True, True, False)]
[1, 1, 0]