如何在不使用python中的多个if/else语句的情况下多次生成随机列表?

2024-04-23 09:28:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图生成一个列表五次,只使用一个while循环和一个数字列表。我编写的代码对我来说似乎很好,但列表只生成一次,然后为其他测试生成相同的列表。每次我都要一张随机列表。我不知道出了什么问题,所以我不知道如何解决它。任何帮助都将不胜感激

这是我的密码:

import random, time

number = 23
counter = 0
total = 5
counter2 = 0
current = 0
numbers = []
tally = 1
trash = []

while counter < total:
  while counter2 < number:
    for x in range(1):
      current = random.randint(1, 366)
      time.sleep(0.0001)
      counter2 += 1
      numbers.append(current)
  numbersS = set(numbers)
  size = len(numbersS)
  if size < number:
    print("1")
  else:
    print("0")
  counter += 1
  numbers = trash

Tags: number列表sizetimecounter数字randomcurrent
1条回答
网友
1楼 · 发布于 2024-04-23 09:28:35

I do not know what is wrong

numbers = trash不是您想要的。它不会清空列表,只会使numbers成为trash的同义词。这意味着下次执行numbers.append(current)时,您实际上会将该值添加到trash列表中

查看此简化代码和注释:

trash = []
numbers = []

numbers.append(1) # adds to numbers, not to trash

numbers = trash # now both names are synonyms for the same list; currently empty

numbers.append(2) # adds to trash(!)

numbers = trash # this was already the case: does not do anything

print(numbers, trash) # [2] [2]

你应该只做numbers = []而不是numbers = trash。或者,您可以使用相同的列表,并使用del numbers[:]numbers.clear()将其截断

相关问题 更多 >