python实现有一个列表有30个数据,随机100次,每次随机从里面取一个数据,如何随机取得值和最近几次都不一样
时间: 2024-02-20 11:58:42 浏览: 242
可以使用`random.sample()`方法来实现从列表中随机取出不重复的元素。每次取出一个元素后,可以将该元素从列表中删除,这样下一次随机取值时就不会重复。同时,可以记录下最近几次取出的值,每次随机前判断当前元素是否在最近几次内出现过,若出现就重新随机取值,直到取到一个最近几次都没有出现过的元素。
以下是示例代码:
```python
import random
lst = list(range(30)) # 初始化列表
recent = [] # 记录最近几次取出的值
for i in range(100):
if len(recent) >= 5: # 最近几次记录达到5个,删除最早的一个
recent.pop(0)
while True:
val = random.sample(lst, 1)[0] # 随机取出一个不重复的元素
if val not in recent: # 判断当前元素是否在最近几次内出现过
recent.append(val)
lst.remove(val) # 从列表中删除该元素
print(val)
break
```
注意:该代码中假设列表中的元素是不重复的,若列表中存在重复元素,则需要使用其他方法来判断是否重复。
阅读全文