我有一个列表=[1,2,3,3,6,8,8,10,2,5,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)
您可以使用如下所示的
flatten()
函数。 此函数是从https://stackoverflow.com/a/40857703/501852修改的版本下面的函数是一个生成器对象(pythonver>;=3.8)
添加了调节功能作为输入参数
然后可以使用
list comprehension
变量:您可以使用
generator
变量:输出为
可以使用^{} 对大于
6
且长度大于1的组的所有元素进行分组。所有其他元素保持未分组状态如果我们想要组作为独立列表,我们可以使用
append
。如果我们想将组展平,可以使用extend
输出:
相关问题 更多 >
编程相关推荐