python - 根据符号变化创建列表
问题描述
我在一列中有 excel 数据(浮点数),其中每几百行发生 20 次变化。该列表有几千行长,但简单地说它看起来像这样[5, 4, 3, 2, 1, -5, -4, -3, -2, -1, 5, 4, 3, 2, 1, -5, ...]
。
我需要包含所有数字的列表,直到发生符号更改,然后开始一个新列表,直到下一个符号更改。所以总的来说,我希望返回尽可能多的列表作为标志的变化。我需要那些做数值积分。不过我可以这样做...
你能给我一个像上面那样的短数组的例子吗?我真的不在乎它是否将结果作为函数的返回值或定义新变量。无论是更容易或更优雅。
谢谢你们的帮助。
解决方案
假设您想按符号分组,您可以使用itertools.groupby:
from itertools import groupby
data = [5, 4, 3, 2, 1, -5, -4, -3, -2, -1, 5, 4, 3, 2, 1, -5]
def groupby_sign(lst):
return [list(group) for _, group in groupby(lst, key=lambda x: x < 0)]
result = groupby_sign(data)
print(result)
输出
[[5, 4, 3, 2, 1], [-5, -4, -3, -2, -1], [5, 4, 3, 2, 1], [-5]]
推荐阅读
- azure - 使用 Azure Logic App 和 Azure Function 更改数据库时使 redis 缓存失效
- javascript - ActionController::RoutingError (没有路由匹配 [GET] )
- javascript - 如何使用 if else 条件在其他 div 之后插入 div
- printing - 如何在 SAP 上安装 .PRI 打印机定义?
- node.js - 如何在对象数组中查找和过滤mongo?
- terminal - Composer 无法安装 yii2 扩展
- regex - 相对 URL 的正则表达式(域名后的段)[& 没有查询字符串]
- javascript - 使用“onClick={}”被认为是一种不好的做法吗?
- javascript - 科学记数法到十进制记数法在 highcharts 中不起作用
- node.js - 将 mongo 嵌套数组查询翻译成 mongoose