python中如何输入矩阵,如何在Python中输入矩阵(二维列表)?

I tried to create this code to input an m by n matrix. I intended to input [[1,2,3],[4,5,6]] but the code yields [[4,5,6],[4,5,6]. Same things happen when I input other m by n matrix, the code yields an m by n matrix whose rows are identical.

Perhaps you can help me to find what is wrong with my code.

m = int(input('number of rows, m = '))

n = int(input('number of columns, n = '))

matrix = []; columns = []

# initialize the number of rows

for i in range(0,m):

matrix += [0]

# initialize the number of columns

for j in range (0,n):

columns += [0]

# initialize the matrix

for i in range (0,m):

matrix[i] = columns

for i in range (0,m):

for j in range (0,n):

print ('entry in row: ',i+1,' column: ',j+1)

matrix[i][j] = int(input())

print (matrix)

解决方案

The problem is on the initialization step.

for i in range (0,m):

matrix[i] = columns

This code actually makes every row of your matrix refer to the same columns object. If any item in any column changes - every other column will change:

>>> for i in range (0,m):

... matrix[i] = columns

...

>>> matrix

[[0, 0, 0], [0, 0, 0]]

>>> matrix[1][1] = 2

>>> matrix

[[0, 2, 0], [0, 2, 0]]

You can initialize your matrix in a nested loop, like this:

matrix = []

for i in range(0,m):

matrix.append([])

for j in range(0,n):

matrix[i].append(0)

or, in a one-liner by using list comprehension:

matrix = [[0 for j in range(n)] for i in range(m)]

or:

matrix = [x[:] for x in [[0]*n]*m]

See also:

Hope that helps.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值