【发布时间】:2014-06-17 04:57:06
【问题描述】:
我有一个包含四个元素的列表,并从中选择一个以最大化我这样做的第一个元素的机会:
from random import choice
_list = [19,14,29,3]
element = choice((a[0],a[0],a[0],a[0],a[1],a[1],a[1],a[2],a[2],a[3]))
虽然现在_list 中的元素数量是可变的,但尝试保持与我编写此片段之前相同的行为:
from random import choice
_list = [19,14,29,3,.......] # n elements
weighted = []
for i in range(len(_list)):
for j in range(len(_list)-i):
weighted.append(_list[i])
element = choice(weighted)
有没有其他方法可以用更少的代码达到同样的效果,效率更高?因为我认为如果n 变得太大,那么weighted 会很大并且会减慢我的算法。
【问题讨论】:
-
这可能会有所帮助,但您必须做一些额外的工作才能使现有答案与您的输入相匹配:stackoverflow.com/q/3679694/646543
标签: python python-3.x random