gpt4 book ai didi

Python:根据连续相同的值将列表拆分为索引

转载 作者:行者123 更新时间:2023-11-28 22:33:54 26 4
gpt4 key购买 nike

如果你能建议我如何编写脚本来按值的数量拆分列表,我的意思是:

my_list =[11,11,11,11,12,12,15,15,15,15,15,15,20,20,20] 

还有 11-4,12-2,15-6,20-3 项。 所以在示例范围的下一个列表中(0:100)我必须分成 4、2、6、3 个部分所以我计算了拆分列表的相同值和函数,但它不适用于列表:

 div=Counter(my_list).values() ##counts same values in the list

def chunk(it, size):
it = iter(it)
return iter(lambda: tuple(islice(it, size)), ())

我需要什么:

Out: ([0,1,2,3],[4,5],[6,7,8,9,10,11], etc...] 

最佳答案

您可以使用 enumerate , itertools.groupby , 和 operator.itemgetter :

In [45]: import itertools

In [46]: import operator

In [47]: [[e[0] for e in d[1]] for d in itertools.groupby(enumerate(my_list), key=operator.itemgetter(1))]
Out[47]: [[0, 1, 2, 3], [4, 5], [6, 7, 8, 9, 10, 11], [12, 13, 14]]

它的作用如下:

  1. 首先它枚举项目。

  2. 它使用每个枚举元组中的第二项(原始值)对它们进行分组。

  3. 在每个组的结果列表中,它使用每个元组中的第一项(枚举)

关于Python:根据连续相同的值将列表拆分为索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39450575/

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