说我想检测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]
但如何使这成为一个oneliner?
答案 0 :(得分:3)
列表理解。你可以使用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]
答案 1 :(得分:1)
print map(lambda x: int(x==0), A)
答案 2 :(得分: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]