Python 根据符号更改创建列表
我在一列中有excel数据(float),每几百行就有20个符号的变化。这个列表有几千行,但很简单,看起来像这样的Python 根据符号更改创建列表,python,Python,我在一列中有excel数据(float),每几百行就有20个符号的变化。这个列表有几千行,但很简单,看起来像这样的[5,4,3,2,1,-5,-4,-3,-2,-1,5,4,3,2,1,-5,…] 我需要包含所有数字的列表,直到符号发生变化,然后开始一个新列表,直到下一个符号发生变化。所以总的来说,我希望返回的列表数量与符号更改的数量相同。我需要这些来做数值积分。不过我可以做到 你能给我举一个像上面这样的短数组的例子吗?我真的不在乎它是将reslut作为函数的返回还是定义新的变量。更容易或更优雅
[5,4,3,2,1,-5,-4,-3,-2,-1,5,4,3,2,1,-5,…]
我需要包含所有数字的列表,直到符号发生变化,然后开始一个新列表,直到下一个符号发生变化。所以总的来说,我希望返回的列表数量与符号更改的数量相同。我需要这些来做数值积分。不过我可以做到
你能给我举一个像上面这样的短数组的例子吗?我真的不在乎它是将reslut作为函数的返回还是定义新的变量。更容易或更优雅的
谢谢你们的帮助 假设您想按符号分组,您可以使用:
@亚历山大很高兴我能帮上忙。如果我的答案对你有帮助,请考虑将它标记为略短(不一定更好):<代码> GROMPBY(LST,KEY=0。使用小数较少的csv文件是否更有效?拆分它并自己尝试多线程是否有意义?我有一个i7四核(第8代)没关系,我只会在excel中每隔一秒或第三行删除一行
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]]