Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用python中的多个if/else语句的情况下多次生成随机列表?_Python_Python 3.x_List_Random_While Loop - Fatal编程技术网

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

如何在不使用python中的多个if/else语句的情况下多次生成随机列表?,python,python-3.x,list,random,while-loop,Python,Python 3.x,List,Random,While Loop,我试图生成一个列表五次,只使用一个while循环和一个数字列表。我编写的代码对我来说似乎很好,但列表只生成一次,然后为其他测试生成相同的列表。每次我都要一张随机列表。我不知道出了什么问题,所以我不知道如何解决它。任何帮助都将不胜感激 这是我的密码: import random, time number = 23 counter = 0 total = 5 counter2 = 0 current = 0 numbers = [] tally = 1 trash = [] while coun

我试图生成一个列表五次,只使用一个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
import random,time
数字=23
计数器=0
总数=5
计数器2=0
电流=0
数字=[]
理货=1
垃圾=[]
而计数器<总计:
而计数器2<数字:
对于范围(1)内的x:
电流=random.randint(1366)
睡眠时间(0.0001)
计数器2+=1
数字。追加(当前)
numbers=set(数字)
大小=长度(数量)
如果尺寸<数量:
打印(“1”)
其他:
打印(“0”)
计数器+=1
数字=垃圾
我不知道怎么了

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

查看此简化代码和注释:

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()

请忽略tally变量它是无用的,我在提问之前忘记删除它。所以您想要5个列表?要生成的列表的大小是多少?为什么不使用
five_list=[random.choices(range(1366),k=23)]
一次获得23个介于1和365(包括365)之间的随机数呢?@Jack,你可以编辑你的问题并删除
tall
你自己。你可能还想看看
numbers=trash
仅关联变量name
number
以指向
trash
的数据-它不会“复制”任何内容这非常有用。我不知道我怎么没有看到这个解决方案。非常感谢。