作者jackflu (jackflu)
看板Python
标题[问题] 吃药随机分配
时间Fri Jun 30 12:01:22 2017
目的:不重复的分配吃药,假设有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://webptt.com/cn.aspx?n=bbs/Python/M.1498795285.A.BC8.html
1F:→ kuso0516: for t in take : drug.remove(t) 06/30 12:08
2F:推 CaptainH: permutation ... 06/30 13:44
3F:→ CaptainH: or shuffle 06/30 13:45
4F:→ y3k: 最快就是拿出来後要从drug中移除阿... 06/30 14:10
5F:推 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
6F:推 ErnieYang: 用shuffle 然後pop 06/30 23:47
7F:→ y3k: random.shuffle(drug) 然後print(drug)出来看看便知 07/01 12:35
※ 编辑: jackflu (1.163.97.26), 07/01/2017 18:03:42
8F:→ y3k: 我认为不需要了 再短会降低可阅姓 07/01 22:29