Python:每日一题 133:求列表元素个数生成新的列表

已有一个列表如下
list1 = [12, 1, 3, 19, 0, 1, 16, 8, 19, 10, 6, 10, 0, 4, 3, 18, 2, 18, 17, 6, 16, 19, 12, 18, 4, 4, 16, 12, 13, 11, 0, 0, 12, 7, 10, 2, 7, 12, 4, 18, 13, 18, 16, 17, 14, 12, 1, 12, 4, 14, 8, 18, 4, 12, 10, 1, 18, 7, 2, 9, 3, 11, 12, 2, 9, 13, 12, 18, 15, 1, 9, 5, 11, 6, 12, 9, 16, 14, 18, 0, 15, 4, 17, 5, 1, 13, 0, 10, 0, 6, 16, 15, 3, 16, 20, 18, 4, 18, 16, 3]
由此生成新的列表,要求为一个2维列表,包括list1的每个不重复元素和在list1中出现的次数。例如12在list1中出现11次,就记为[12, 11],最后按元素由小到大排序,生成如下的列表

[[0, 7], [1, 6], [2, 4], [3, 5], [4, 8], [5, 2], [6, 4], [7, 3], [8, 2], [9, 4], [10, 5], [11, 3], [12, 11], [13, 4], [14, 3], [15, 3], [16, 8], [17, 3], [18, 11], [19, 3], [20, 1]]


Python源码:

list1 = [12, 1, 3, 19, 0, 1, 16, 8, 19, 10,\
         6, 10, 0, 4, 3, 18, 2, 18, 17, 6,\
         16, 19, 12, 18, 4, 4, 16, 12, 13,\
         11, 0, 0, 12, 7, 10, 2, 7, 12, 4,\
         18, 13, 18, 16, 17, 14, 12, 1, 12,\
         4, 14, 8, 18, 4, 12, 10, 1, 18, 7,\
         2, 9, 3, 11, 12, 2, 9, 13, 12, 18,\
         15, 1, 9, 5, 11, 6, 12, 9, 16, 14,\
         18, 0, 15, 4, 17, 5, 1, 13, 0, 10,\
         0, 6, 16, 15, 3, 16, 20, 18, 4, 18, 16, 3]
array = set()
for i in list1:
    temp = (i, list1.count(i))
    array.add(temp)
array = list(array)
array.sort(key=lambda x:x[0])
array = list(map(list, array))
print(array)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值