首页 > 解决方案 > 基于内部值的python列表分类

问题描述

mylist = [1, 1,2, 2, 2, 15, 15, 15, 15,28, 21, 21, 21, 21, 21, 21, 27, 27, 27] 我希望使列表变为: mylist = [[1, 1],[2, 2, 2], [15, 15, 15, 15],[28], [21, 21, 21, 21, 21, 21], [27, 27, 27]] 最好的方法是什么?有人能帮助我吗

标签: python

解决方案


这将正常工作:

from collections import Counter
mylist = [1, 1, 2, 2, 2, 15, 15, 15, 15, 28, 21, 21, 21, 21, 21, 21, 27, 27, 27]
c = Counter(mylist)
mylist = []
for key in c:
    mylist.append([key]*c[key])
print(mylist)

输出

[[1, 1], [2, 2, 2], [15, 15, 15, 15], [28], [21, 21, 21, 21, 21, 21], [27, 27, 27]]

或者

mylist = [1, 1, 2, 2, 2, 15, 15, 15, 15, 28, 21, 21, 21, 21, 21, 21, 27, 27, 27, 1, 1, 1, 1]
temp = []
value=mylist[0]
count = 0
for item in mylist:
    if(item==value):
        count+=1
    else:
        temp.append([value]*count)
        value=item
        count=1
temp.append([value]*count)
mylist = temp.copy()
print(mylist)

输出

[[1, 1], [2, 2, 2], [15, 15, 15, 15], [28], [21, 21, 21, 21, 21, 21], [27, 27, 27], [1, 1, 1, 1]]

推荐阅读