0.目录
1.遇到的问题
2.创建二维数组的办法
"color: #ff0000">1.遇到的问题
今天写Python代码的时候遇到了一个大坑,差点就耽误我交作业了。。。
问题是这样的,我需要创建一个二维数组,如下:
m = n = 3 test = [[0] * m] * n print("test =", test)
输出结果如下:
test = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
是不是看起来没有一点问题?
一开始我也是这么觉得的,以为是我其他地方用错了什么函数,结果这么一试:
m = n = 3 test = [[0] * m] * n print("test =", test) test[0][0] = 233 print("test =", test)
输出结果如下:
test = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] test = [[233, 0, 0], [233, 0, 0], [233, 0, 0]]
是不是很惊讶?!
这个问题真的是折磨我一个中午,去网上一搜,官方文档中给出的说明是这样的:
Note also that the copies are shallow; nested structures are not copied. This often haunts new Python programmers; consider:
> lists = [[]] * 3 > lists [[], [], []] > lists[0].append(3) > lists [[3], [3], [3]]
What has happened is that [[]] is a one-element list containing an empty list, so all three elements of [[]] * 3 are (pointers to) this single empty list. Modifying any of the elements of lists modifies this single list. You can create a list of different lists this way:
> > lists = [[] for i in range(3)] > lists[0].append(3) > lists[1].append(5) > lists[2].append(7) > lists [[3], [5], [7]]
也就是说matrix = [array] * 3操作中,只是创建3个指向array的引用,所以一旦array改变,matrix中3个list也会随之改变。
2.创建二维数组的办法
2.1 直接创建法
test = [0, 0, 0], [0, 0, 0], [0, 0, 0]]
简单粗暴,不过太麻烦,一般不用。
2.2 列表生成式法
test = [[0 for i in range(m)] for j in range(n)]
学会使用列表生成式,终生受益。不会的可以去列表生成式 - 廖雪峰的官方网站学习。
2.3 使用模块numpy创建
import numpy as np test = np.zeros((m, n), dtype=np.int)
关于模块numpy.zeros的更多知识,可以去 python中numpy.zeros(np.zeros)的使用方法 看看。
以上这篇Python创建二维数组实例(关于list的一个小坑)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 群星《我们的歌第六季 第2期》[FLAC/分轨][385.16MB]
- 童丽《每一个晚上》[低速原抓WAV+CUE]
- 乌兰齐齐格《呼伦牧歌》[原抓WAV+CUE]
- 黄乙玲1988-无稳定的爱心肝乱糟糟[日本东芝1M版][WAV+CUE]
- 群星《我们的歌第六季 第3期》[320K/MP3][70.68MB]
- 群星《我们的歌第六季 第3期》[FLAC/分轨][369.48MB]
- 群星《燃!沙排少女 影视原声带》[320K/MP3][175.61MB]
- 乱斗海盗瞎6胜卡组推荐一览 深暗领域乱斗海盗瞎卡组分享
- 炉石传说乱斗6胜卡组分享一览 深暗领域乱斗6胜卡组代码推荐
- 炉石传说乱斗本周卡组合集 乱斗模式卡组最新推荐
- 佟妍.2015-七窍玲珑心【万马旦】【WAV+CUE】
- 叶振棠陈晓慧.1986-龙的心·俘虏你(2006复黑限量版)【永恒】【WAV+CUE】
- 陈慧琳.1998-爱我不爱(国)【福茂】【WAV+CUE】
- 咪咕快游豪礼放送,百元京东卡、海量欢乐豆就在咪咕咪粉节!
- 双11百吋大屏焕新“热”,海信AI画质电视成最大赢家