Python列表推导:将数组中的所有元素设置为0或1

时间:2014-02-22 04:10:27

标签: python list list-comprehension

我一直试图想出一个单行列表解析来执行以下操作:给定一个整数数组和一个整数,调用它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]

3 个答案:

答案 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)

TrueFalse已经按照您希望的方式投放到int。只需将它们直接转换为int

>>> [int(t) for t in (True, True, False)]
[1, 1, 0]