我如何将此代码转换为一个衬里或使用列表理解减少行数?
How can I convert this code into one liner or reduce the number of lines using list comprehension?
def consecutive_zeros(input_binary):
count = 0
count_list = list()
for x in input_binary:
if x == "0":
count += 1
else:
count_list.append(count)
count = 0
return max(count_list)
我尝试了不同的方法来实现相同的方法,但出现语法错误或输出错误。
有没有更有效的方法可以实现相同的功能?如何使它成为一个班轮?
您似乎想找到 1 之后最长的 0 序列。如果这是正确的,最后的零不应该被计算在内。我有一个基于字符串操作的解决方案,因为我假设您的输入是一个字符串。如果不是,请考虑在您的问题中添加示例输入。
def consecutive_zeros(input_binary):
return max(map(len, input_binary.rstrip('0').split('1')))
print(consecutive_zeros('0000111110001000000')) # 4
print(consecutive_zeros('00001111100010000001')) # 6
编辑:由于您的函数被命名为 consecutive_zeros
,因此您最后可能还需要一个序列,这不会被计入您的代码中。如果你想计算它,你可以使用这个代码:
def consecutive_zeros(input_binary):
return max(map(len, input_binary.split('1')))
print(consecutive_zeros('0000111110001000000')) # 6
print(consecutive_zeros('00001111100010000001')) # 6
根据你问题中的函数,returns 前导 0 的数量,你可以使用这个:
def consecutive_zeros(input_binary):
return len(input_binary) - len(input_binary.lstrip('0'))
def consecutive_zeros(input_binary):
count = 0
count_list = list()
for x in input_binary:
if x == "0":
count += 1
else:
count_list.append(count)
count = 0
return max(count_list)
我尝试了不同的方法来实现相同的方法,但出现语法错误或输出错误。 有没有更有效的方法可以实现相同的功能?如何使它成为一个班轮?
您似乎想找到 1 之后最长的 0 序列。如果这是正确的,最后的零不应该被计算在内。我有一个基于字符串操作的解决方案,因为我假设您的输入是一个字符串。如果不是,请考虑在您的问题中添加示例输入。
def consecutive_zeros(input_binary):
return max(map(len, input_binary.rstrip('0').split('1')))
print(consecutive_zeros('0000111110001000000')) # 4
print(consecutive_zeros('00001111100010000001')) # 6
编辑:由于您的函数被命名为 consecutive_zeros
,因此您最后可能还需要一个序列,这不会被计入您的代码中。如果你想计算它,你可以使用这个代码:
def consecutive_zeros(input_binary):
return max(map(len, input_binary.split('1')))
print(consecutive_zeros('0000111110001000000')) # 6
print(consecutive_zeros('00001111100010000001')) # 6
根据你问题中的函数,returns 前导 0 的数量,你可以使用这个:
def consecutive_zeros(input_binary):
return len(input_binary) - len(input_binary.lstrip('0'))