Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为python矩阵中的匹配项创建布尔矩阵_Python - Fatal编程技术网

为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]