python生成指定长度的列表_Python中随机大小列表的生成

代码中的问题是,当您执行以下操作时:

a = [[0] * row_num] * colum_num

您创建colum_num链接以列出[[0] * row_num].当您更改其中一个列表(在您的for中)时,其他列表也将更改.您可以运行以下代码来了解我的意思

a = [1,2,3]

b = [a] * 3

print(b)

a[1] = 10

print(b)

输出将是[[1、2、3],[1、2、3],[1、2、3]]和[[1、10、3],[1、10、3],[1, 10,3]],因为b只是与a的3个链接.

有多种创建新列表而不创建副本的方法,例如索引整个列表

b = [a[:]] * 3

或使用复制模块

import copy

b = [copy.copy(a)] * 3

或使用生成器表达式创建多个相似(全为0)但是不同对象的列表,如sgbirch建议.

a = [[0 for x in range(column_num)] for y in range(row_num)]

顺便说一句,创建一个全为0的列表是没有意义的,您可以执行以下操作:

row_num = int(input('Please enter matrix row number:'))

column_num = int(input('please enter matrix column number:'))

a = [[int(input()) for x in range(column_num)] for y in range(row_num)]

用户逐行输入矩阵也可能更简单.

a = [[int(x) for x in input('Input row № {} ({} numbers): '.format(y + 1, column_num)).split()] for y in range(row_num)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值