作者apua (Apua)
看板Python
标题Re: [问题]没头绪的一个问题...
时间Sun Apr 11 12:26:19 2010
1F:推 qsort:z=zip(pos,str); z.sort(lamdb key:key[0]); 04/11 01:55
2F:→ qsort:print "".join([s[1] for s in z]) 04/11 01:55
帮qsort整理一下,原推应该是写成如下(丢到编辑器会比较适合阅读):
# 以下使用python2.x的语法
str=raw_input("string:") # 假设为abc
pos=raw_input("possition:") # 假设为312
z = zip(str,pos)
# ^^^^^^^^^^^
# z会是一个list,它的元素是pos对应str的tuple如下:
# [('a', '3'), ('b', '1'), ('c', '2')]
z.sort(key= (lambda key:key[1]) )
# ^^^^^^^^^^^^^^^^^^^
# key需要一组函数做排序的条件,也就是上面标记的部份
# 而被该函数引入的key就是z的每一个元素
# 所以最後z的排序结果会依据['3','1','2']的排序结果
print "".join([s[0] for s in z])
# 将z最後排序的结果抽出来并合并
个人觉得qsort写的方法更符合原PO提的问题
原PO的问题是「依据密码做排序」,而这正就是zip(...).sort(key = FUNCTION)在做的事
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.28.210
3F:推 lions06:不好意思 我试了一下 跑不出来耶 是版本的问题吗?~"~ 04/11 14:25
4F:→ lions06:我用的是python3.1IDLE 04/11 14:26
5F:推 ya790206:是版本问题 04/11 14:54
6F:推 qsort:谢谢apua帮忙解释。 04/11 19:00
7F:→ qsort:p3k请加一行 z=zip(str,pos); z=tuple(zip); 把zip转成tuple 04/11 19:02
8F:推 qsort:写错了,转成list才是 l=list(z) 04/11 19:19
※ 编辑: apua 来自: 59.104.29.51 (04/12 00:18)