Как создать случайный список более одного раза, не используя несколько операторов if / else в python? - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь сгенерировать список пять раз, используя только один цикл 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

1 Ответ

0 голосов
/ 22 декабря 2018

Я не знаю, что не так

Линия 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()

...