如何在不使用python中的多个if/else语句的情况下多次生成随机列表?
我试图生成一个列表五次,只使用一个while循环和一个数字列表。我编写的代码对我来说似乎很好,但列表只生成一次,然后为其他测试生成相同的列表。每次我都要一张随机列表。我不知道出了什么问题,所以我不知道如何解决它。任何帮助都将不胜感激 这是我的密码:如何在不使用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
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
仅关联变量namenumber
以指向trash
的数据-它不会“复制”任何内容这非常有用。我不知道我怎么没有看到这个解决方案。非常感谢。