gpt4 book ai didi

带有过滤器用法的python itertools groupby

转载 作者:行者123 更新时间:2023-12-04 02:35:58 32 4
gpt4 key购买 nike

我有一个列表 = [1, 2, 3, 3, 6, 8, 8, 10, 2, 5, 7, 7]我正在尝试使用 groupby 将其转换为

1
2
3
3
6
8,8
10
2,
5
7,7

基本上,任何大于 6 的值,我都喜欢将它们分组,否则我想让它们不分组。关于如何使用 itertool groupby 执行此操作的任何提示

我目前的代码:

for key, group in it.groupby(numbers, lambda x: x):
f = list(group)
if len(f) == 1:
split_list.append(group[0])
else:
if (f[0] > 6): #filter condition x>6
for num in f:
split_list.append(num + 100)
else:
for num in f:
split_list.append(num)

最佳答案

您可以使用 itertools.groupby将所有大于 6 且组长度大于 1 的元素分组。所有其他元素保持未分组。

如果我们希望组作为独立的列表,我们可以使用append。如果我们想要扁平化组,我们可以使用extend

from itertools import groupby

lst = [1, 2, 3, 3, 6, 8, 8, 10, 2, 5, 7, 7]

result = []
for k, g in groupby(lst):
group = list(g)

if k > 6 and len(group) > 1:
result.append(group)
else:
result.extend(group)

print(result)

输出:

[1, 2, 3, 3, 6, [8, 8], 10, 2, 5, [7, 7]]

关于带有过滤器用法的python itertools groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61809041/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com