【发布时间】:2022-11-23 23:03:06
【问题描述】:
为了检查给定的 list 是否仅由 0 和 1 值构成,我尝试设置一个函数,当 list 是二进制时返回 True,而当它不是时返回 False :
我的代码
def is_binary(y):
for x in y:
if x in [2,3,4,5,6,7,8,9]:
return False
break
else:
return True
我在以下列表中尝试过:
our_list=[1,0,0,0,1,1,0,0,0,0,1,0,1,0,1,1,1]
is_binary(our_list)
输出:
True
但是当变量不是二进制时它不起作用。 您身边的任何帮助将不胜感激。
【问题讨论】:
-
不管这个数字是多少,你都会返回第一个数字。您永远不会检查第一个数字之后的任何内容。将
return True移到 for 循环之外。另外,检查x not in [0, 1]是否更直观和清晰? -
你可以全部使用:
all(x in {0,1} for x in our_list) -
对于
list和ints 以外的其他情况,做not in [0, 1]之类的事情可能会更好。 -
你可以简单地
return all(x in [0,1] for x in y)。 -
set(our_list) <= {0, 1}
标签: python