【问题标题】:Python3 find groups of strictly increasing " float values" within a listPython3 在列表中找到严格增加的“浮点值”组
【发布时间】: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]]

任何帮助将不胜感激。

【问题讨论】:

  • 这能回答你的问题吗? Finding groups of increasing numbers in a list
  • 你想要的输出的第三个元素不应该是[-12, 7, 8]吗?
  • 哎呀,这是一个快速的反应......是的,你是对的。我的坏..
  • 链接“在列表中查找递增数字组”中的答案都是整数而不是浮点数...不回答我的问题。
  • 你为什么要prev + 1 == start?浮动系列与此断言不匹配,因此它们被忽略是很正常的

标签: python


【解决方案1】:

问题出在这一行:

if prev + 1 == start:

序列中的浮点数不会加一:-1.2 + 1 <> -1.1

if start and start > prev:

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2016-09-28
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    相关资源
    最近更新 更多