看板 Python 關於我們 聯絡資訊
目的:不重複的分配吃藥,假設有7種藥,3餐吃2顆,睡前吃1顆。 想要達成: Morning : [4, 5] Noon : [7, 3] Night : [2, 1] Sleep : [6] 我寫的 2.7版本 import random drug = [1, 2, 3, 4, 5, 6, 7 ] take = random.sample(drug,2) print "Morning : " , take take = random.sample(drug,2) print "Noon : " , take take = random.sample(drug,2) print "Night : " , take take = random.sample(drug,1) print "Sleep : " , take 我只能寫出會重複的 新手爬文後想不出來請教 感謝指導 ---更新 感謝幾位大大 目前只看的懂一樓大大的--- import random drug = [1, 2, 3, 4, 5, 6, 7 ] take = random.sample(drug,2) print "Morning : " , take for t in take : drug.remove(t) take = random.sample(drug,2) print "Noon : " , take for t in take : drug.remove(t) take = random.sample(drug,2) print "Night : " , take for t in take : drug.remove(t) take = random.sample(drug,1) 有更漂亮的寫法嗎? --- 再次感謝 換了看起來比較舒服 --- import random drug = [1, 2, 3, 4, 5, 6, 7 ] random.shuffle(drug) print drug print "Moring: ",(drug[0],drug[1]) print "Noon: " ,(drug[2],drug[3]) print "Night: " ,(drug[4],drug[5]) print "Sleep: " , drug[6] 還希望可以更簡短,繼續研究看看 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.113.217 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1498795285.A.BC8.html
kuso0516: for t in take : drug.remove(t) 06/30 12:08
CaptainH: permutation ... 06/30 13:44
CaptainH: or shuffle 06/30 13:45
y3k: 最快就是拿出來後要從drug中移除阿... 06/30 14:10
APM99: drug = [ s for s in drug if s not in take] 06/30 15:42
※ 編輯: jackflu (36.231.113.217), 06/30/2017 21:09:35
ErnieYang: 用shuffle 然後pop 06/30 23:47
y3k: random.shuffle(drug) 然後print(drug)出來看看便知 07/01 12:35
※ 編輯: jackflu (1.163.97.26), 07/01/2017 18:03:42
y3k: 我認為不需要了 再短會降低可閱姓 07/01 22:29