首页 > 解决方案 > 如何在再次循环之前随机循环整个列表?

问题描述

import random
list1 = [11, 22, 33, 44, 55]
for i in range(5):
   random_number = random.randint(0,4)
   print(list1[random_number])

我试图找到一种方法来随机打印整个列表,而不在第一个循环中打印列表的副本。然后,如果我将范围增加到 10、15、20 等,每 5 次打印随机显示所有元素并且没有重复(重复我的意思是每组 5 次显示的打印没有重复)即 22、33、11, 55, 44, 44, 11, 33, 22, 55, 33, 22, 55, 44, 11 ...

标签: pythonrandom

解决方案


您可以制作列表的副本,然后从副本中弹出元素直到它为空,然后通过再次复制原始列表来“重新加载”它

import random
list1 = [11, 22, 33, 44, 55]
clonedList = list1.copy()
for i in range(5):
   if len(clonedList == 0):
       clonedList = list1.copy()
   random_number = random.randint(0,len(clonedList)-1)
   print(clonedList.pop(random_number))

推荐阅读