【发布时间】:2023-03-21 12:43:01
【问题描述】:
我找不到在列表中找到严格递增的“浮点值”组的解决方案。我在网上找到的所有示例都是按“整数”类型值分组的。我正在寻找的一个简单示例是获取浮点值序列的代码......为了清楚起见,请参阅下面的列表:
l = [8, 9, 10, -1.2, -1.1 ,-1.0, -10, -11, -12, 7, 8, 1.2, 2.3, 3.4]
下面的代码只返回整数并忽略浮点数。如果我使用“round”函数将列表更改为整数,那将违背整个努力的目的......
我想要实现的是从上面的列表中严格增加“浮点值”的输出,返回以下输出值: [[8, 9, 10],[-1.2,-1.1,-1.0] , [7, 8], [1.2, 2.3, 3.4]]
最能解释问题的代码:
def groupSequence(x):
it = iter(x)
prev, res = next(it), []
while prev is not None:
start = next(it, None)
if prev + 1 == start:
res.append(prev)
elif res:
yield list(res + [prev])
res = []
prev = start
l = [8, 9, 10, -1.2, -1.1 ,-1.0, -10, -11, -12, 7, 8, 1.2, 2.3, 3.4]
print(list(groupSequence(l)))
#当前输出:
[[8, 9, 10], [7, 8]]
#期望的输出
[[8, 9, 10],[-1.2,-1.1,-1.0] , [7, 8], [1.2, 2.3, 3.4]]
任何帮助将不胜感激。
【问题讨论】:
-
你想要的输出的第三个元素不应该是
[-12, 7, 8]吗? -
哎呀,这是一个快速的反应......是的,你是对的。我的坏..
-
链接“在列表中查找递增数字组”中的答案都是整数而不是浮点数...不回答我的问题。
-
你为什么要
prev + 1 == start?浮动系列与此断言不匹配,因此它们被忽略是很正常的
标签: python