为python矩阵中的匹配项创建布尔矩阵
假设我想检测为python矩阵中的匹配项创建布尔矩阵,python,Python,假设我想检测A中的零: A = [1, 0, 10, 5, 0, 0, 5] 我想 def check(x): if x!=0: return 0 elif x==0: return 1 b = [check(x) for x in A] -> b = [0, 1, 0, 0, 1, 1, 0] 但是,如何使其成为一条直线呢?您可以通过以下方式完成: A = [1, 0, 10, 5, 0, 0, 5] result = [1 if
A
中的零:
A = [1, 0, 10, 5, 0, 0, 5]
我想
def check(x):
if x!=0:
return 0
elif x==0:
return 1
b = [check(x) for x in A]
-> b = [0, 1, 0, 0, 1, 1, 0]
但是,如何使其成为一条直线呢?您可以通过以下方式完成:
A = [1, 0, 10, 5, 0, 0, 5]
result = [1 if i==0 else 0 for i in A]
>>> print result
[0, 1, 0, 0, 1, 1, 0]
您可以这样做:
A = [1, 0, 10, 5, 0, 0, 5]
result = [1 if i==0 else 0 for i in A]
>>> print result
[0, 1, 0, 0, 1, 1, 0]
用一个列表理解。您可以使用以下事实:0为假,任何非零整数为真:
>>> A = [1, 0, 10, 5, 0, 0, 5]
>>> [0 if a else 1 for a in A]
[0, 1, 0, 0, 1, 1, 0]
或者,相当于:
>>> [int(not a) for a in A]
[0, 1, 0, 0, 1, 1, 0]
只是一个有趣的数学把戏:
>>> [0**a for a in A]
[0, 1, 0, 0, 1, 1, 0]
>>> map((0).__pow__, A)
[0, 1, 0, 0, 1, 1, 0]
用一个列表理解。您可以使用以下事实:0为假,任何非零整数为真:
>>> A = [1, 0, 10, 5, 0, 0, 5]
>>> [0 if a else 1 for a in A]
[0, 1, 0, 0, 1, 1, 0]
或者,相当于:
>>> [int(not a) for a in A]
[0, 1, 0, 0, 1, 1, 0]
只是一个有趣的数学把戏:
>>> [0**a for a in A]
[0, 1, 0, 0, 1, 1, 0]
>>> map((0).__pow__, A)
[0, 1, 0, 0, 1, 1, 0]