看板 Python 關於我們 聯絡資訊
qsort:z=zip(pos,str); z.sort(lamdb key:key[0]); 04/11 01:55
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
lions06:不好意思 我試了一下 跑不出來耶 是版本的問題嗎?~"~ 04/11 14:25
lions06:我用的是python3.1IDLE 04/11 14:26
ya790206:是版本問題 04/11 14:54
qsort:謝謝apua幫忙解釋。 04/11 19:00
qsort:p3k請加一行 z=zip(str,pos); z=tuple(zip); 把zip轉成tuple 04/11 19:02
qsort:寫錯了,轉成list才是 l=list(z) 04/11 19:19
※ 編輯: apua 來自: 59.104.29.51 (04/12 00:18)