mumei2018 发表于 2023-5-3 02:02:18

请问为何两次不同的循环得到的随机列表是样的


我在做23回的动动手 要从88×88的随机二维列表里 找到输入值并打印下标

我心想第一步是做一个88×88的随机二位列表
再想就是 先做个5×5的试试 结果怎么都弄不出来

倒是可以获得一个五元素的随机列表 可以做二维列表的时候 row里的列表怎么搞都是一样

然后我试着 在段代码里 做两次 五元素随机列表 结果做出来 还是一样的
请问为啥还是一样呢?
请问做随机列表做两次 为啥做出来的列表还是一样呢那做5次 做88次 不得都重样

import random

row = []
column = []
i = 0


while i < 5:
    #循环1开始
    eli_column = random.randint(0,1025)
    i += 1
    column.append(eli_column)
    #以上循环生成一个五个数的列表
row.append(column)
    #大列表加入一个随机列表

while i < 5:
    #循环2开始
    eli_column = random.randint(0,1025)
    i += 1
    column.append(eli_column)
    #再生成了一个随机列表


row.append(column)
#把两个随机列表加入row列表中
print(row)

我想 这样应该就可以在row列表中 加入两个不一样的 五元素 随机列表了

得到的结果 却是 两次生成的随机列表一摸一样

import random

row = []
column = []
i = 0
j = 0

while j < 5:
    while i < 5:
      eli_column = random.randint(0,1025)
      i += 1
      column.append(eli_column)
      #以上循环生成一个五个数的列表
    row.append(column)
    #大列表加入一个随机列表
    j += 1
    #循环五次
   

print(row)

重复五次 结果得到的五个一摸一样的列表

这究竟是怎么回事啊 晕了

歌者文明清理员 发表于 2023-5-3 02:04:55

本帖最后由 歌者文明清理员 于 2023-5-3 02:14 编辑

在您的代码中,问题在于 column 列表只被创建了一次,然后多次添加到 row 列表中。这意味着每次添加到 row 的都是同一个列表对象的引用。因此,当随机数生成器创建并填充列时,所有之前放入 row 中的列表都已经更改了。
要解决这个问题,请将行和列的创建放入嵌套循环中,以便为每个索引位置创建一个唯一且独立的列:

import random

row = []
for i in range(5):
    column = []
    for j in range(5):
      eli_column = random.randint(0, 1025)
      column.append(eli_column)
    row.append(column)

print(row)
现在,如果多次运行此代码,您应该会得到不同的随机列表。

isdkz 发表于 2023-5-3 02:10:19

歌者文明清理员 发表于 2023-5-3 02:04
在您的代码中,问题在于 column 列表只被创建了一次,然后多次添加到 row 列表中。这意味着每次添加到 row...

这么卷?

mumei2018 发表于 2023-5-3 02:10:37

歌者文明清理员 发表于 2023-5-3 02:04
在您的代码中,问题在于 column 列表只被创建了一次,然后多次添加到 row 列表中。这意味着每次添加到 row...

你一说我就明白了 自己折腾半天 谢啦

歌者文明清理员 发表于 2023-5-3 02:13:21

isdkz 发表于 2023-5-3 02:10
这么卷?

卷到底是啥意思来着

isdkz 发表于 2023-5-3 02:17:56

歌者文明清理员 发表于 2023-5-3 02:13
卷到底是啥意思来着

就是很勤奋的意思

歌者文明清理员 发表于 2023-5-3 02:19:54

isdkz 发表于 2023-5-3 02:17
就是很勤奋的意思

明天我可不能这样了,不然后天上学会……

成不换 发表于 2023-5-3 14:09:09

我又来白嫖了
页: [1]
查看完整版本: 请问为何两次不同的循环得到的随机列表是样的