作者oaz (台湾独立建国不必钱吗?)
看板Python
标题Re: [问题] 想请教一个问题
时间Fri Feb 11 22:49:43 2011
※ 引述《DP1010 (DP)》之铭言:
: 现在有一个list
: 假设长这样 ['369','200','116','90','180','638','724','920','14','50','11','65']
: 我现在想要找出这list里面数字的最大5个
: 其依序的"位置"为何
: 比如这个list最大的数字 依序为 920 724 638 369 200
: 其依序的位置为 7 6 5 0 1
: 想请教各位大大要怎麽做
: 谢谢
L=['369','200','116','90','180','638','724','920','14','50','11','65']
zip(*sorted(enumerate(map(int, L)), key=lambda x: x[1], reverse=True)[:5])[0]
以下拆解几个步骤来做说明:
intL=map(int, L) # 转成数字串列
sortedL=sorted(enumerate(intL), key=lambda x: x[1], reverse=True)[:5]
# 用 enumerate 为每个数编号,以第二个栏位为 key ,由大到小排序,取前五个
# sortedL 长这样: [(7, 920), (6, 724), (5, 638), (0, 369), (1, 200)]
zipL=zip(*sortedL)
# sortedL 长这样: [(7, 920), (6, 724), (5, 638), (0, 369), (1, 200)]
# zipL 长这样:[(7, 6, 5, 0, 1), (920, 724, 638, 369, 200)]
ans=zipL[0]
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.30.46
※ 编辑: oaz 来自: 140.112.30.46 (02/11 22:51)