我有一个项目列表[],我想从中随机显示一个项目,但显示的项目在最后 x 个请求中不得重复多次。
- 列表 1 = 项目 1、项目 2、项目 3、项目 4、
项目 5、项目 6、项目 7、项目 8、项目 9、
第10项
- 显示随机选择
从上面的列表中
- list2 = 存储 list2 中最后显示的项目,该项目仅应存储 7
项目,而不是更多
- 显示随机
从列表中选择,但使
确定它不存在于
列表2
这是正确的做法吗?不管怎样,我想知道如何限制列表只存储 7 个项目?
Thanks
collections.deque 是 python 中唯一自然支持有界的序列类型(并且仅在 Python 2.6 及更高版本中)。如果使用 python 2.6 或更高版本:
# Setup
from collections import deque
from random import choice
used = deque(maxlen=7)
# Now your sampling bit
item = random.choice([x for x in list1 if x not in used])
used.append(item)
如果使用 python 2.5 或更低版本,则不能使用 maxlen 参数,并且需要再执行一项操作来截断双端队列的前面:
while len(used) > 7:
used.popleft()
这并不是最有效的方法,但它确实有效。如果您需要速度,并且您的对象是可散列的(大多数不可变类型),请考虑使用字典作为“已使用”列表。
另外,如果您只需要执行一次,那么 random.shuffle 方法也可以。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)