文章目录

  • 普通方法:
  • 简洁方法
    • 错误的方法
  • 高级方法

普通方法:

最简单易懂的方法,这种逻辑不仅适用于 python,也适用于任何变成语言。

row = 5
col = 8
matrix = []for i in range(row):m = []for j in range(col):m.append(False)matrix.append(m)# 矩阵打印函数
def showMatrix():for i in range(row):for j in range(col):print(matrix[i][j], end="\t")print()showMatrix()
print("更改 matrix[1][1] 的值为 True ")
matrix[1][1] = True
showMatrix()
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
更改 matrix[1][1] 的值为 True
False   False   False   False   False   False   False   False
False   True    False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False

简洁方法

列表解析是python的一大特点,它能够是代码更加简洁易懂。

row = 5
col = 8
matrix = [[False] * col for i in range(row)]# 矩阵打印函数
def showMatrix():for i in range(row):for j in range(col):print(matrix[i][j], end="\t")print()showMatrix()
print("更改 matrix[1][1] 的值为 True ")
matrix[1][1] = True
showMatrix()
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
更改 matrix[1][1] 的值为 True
False   False   False   False   False   False   False   False
False   True    False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False

错误的方法

row = 5
col = 8
matrix = [[False] * col] * row# 矩阵打印函数
def showMatrix():for i in range(row):for j in range(col):print(matrix[i][j], end="\t")print()showMatrix()
print("更改 matrix[1][1] 的值为 True ")
matrix[1][1] = True
showMatrix()

可以看到,如果不使用列表解析,改变一行的任意一列,那么每一行的该列都会改变。

False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
False   False   False   False   False   False   False   False
更改 matrix[1][1] 的值为 True
False   True    False   False   False   False   False   False
False   True    False   False   False   False   False   False
False   True    False   False   False   False   False   False
False   True    False   False   False   False   False   False
False   True    False   False   False   False   False   False

什么原因呢?
我们打出每一行列表的地址

def showMatrix():for i in range(row):print(id(matrix[i]))showMatrix()

会发现每一行列表的地址都是一样的。说明他们都指向同一个内存地址,所以如果该地址的内容发生改变,那么所有指向该地址的列表都会发生改变。

51683496
51683496
51683496
51683496
51683496

如果我们使用列表解析

row = 5
col = 8
matrix = [[False] * col for i in range(row)]

那么每一行列表就相当于独立保存的

51488776
51486920
51486760
51486792
51486824

我们在生成矩阵的时候,一定要用列表解析的方式生成矩阵。

高级方法

使用numpy包可以直接生成举矩阵,这里使用的是numpy的full函数,因为这种函数生成非数字矩阵的时候比较方便。

import numpy as np
matrix = np.full(shape=(5, 8), fill_value=False)print(matrix)
print("更改 matrix[1][1] 的值为 True ")
matrix[1][1] = True
print(matrix)
[[False False False False False False False False][False False False False False False False False][False False False False False False False False][False False False False False False False False][False False False False False False False False]]
更改 matrix[1][1] 的值为 True
[[False False False False False False False False][False  True False False False False False False][False False False False False False False False][False False False False False False False False][False False False False False False False False]]

Python学习笔记#4:快速生成二维矩阵的方法相关推荐

  1. python学习 —— 使用QRCode包生成二维码

    我使用的是python3,最简单的方法就是使用QRCode,如果没有安装QRCode package,那么可以使用下面命令进行安装: pip3 install QRCode 然后,测试一下: from ...

  2. python生成二维矩阵的方法

    欢迎关注公众号--<数据三分钟> 一线大厂的师兄师姐结合自己的工作实践,将数据知识浅显道来,每天三分钟,助你成为数据达人.还有面试指导和内推机会. 1.直接用列表生成m行n列的矩阵 m,n ...

  3. 利用Python QRCode模块快速生成二维码

    利用Python QRCode模块快速生成二维码 安装qrcode相关模块: pip install qrcode pip install Image 生成二维码的Python实现: import q ...

  4. Python学习笔记第二十九天(N维数组(ndarray))

    Python学习笔记第二十九天 N维数组(ndarray) 构建阵列 索引阵列 ndarray的内部内存布局 阵列属性 内存布局 数据类型 其他属性 阵列接口 ctypes外部功能接口 Array方法 ...

  5. 在web页面上快速生成二维码的三种实用方法

    转载自:在web页面上快速生成二维码的三种实用方法 二维码是桌面和移动端快速分享的高效手段之一,这里介绍两个不错的快速开发二维码的方法,和大家分享一下~~ 方法1:使用极客标签提供的二维码快速生成服务 ...

  6. 使用Python快速生成二维码的两种方式及二维码解码

    Python有好几个模块(例如qrcode.MyQR)可以一两行代码就生成一个二维码,也有解码二维码以了解原始字符串的代码,简单方便. 下面介绍qrcode模块和MyQR模块. 一.qrcode模块 ...

  7. 猫猫学iOS之二维码学习,快速生成二维码

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 二维码是一项项目中可能会用到的,iOS打开相机索取二维码的速度可 ...

  8. liunx+python+django框架实现图片生成二维码

    点击箭头处"蓝色字",免费领测试技术及面试资料! 余生皆欢喜 liunx+python+django框架实现二维码生成器 首先我简单的介绍下django:django官网解释就是如 ...

  9. K210学习笔记(十)——二维码识别

    前言 MAIX BIT(K210)和openmv在传统视觉处理这个方面代码是通用的,掌握K210的色块识别和二维码识别其实也掌握了openmv对应的用法. 一.二维码是什么? 二维码 (2-dimen ...

最新文章

  1. python的主要应用领域及常用的函数模块_python之常用模块篇5
  2. SAP Spartacus ProductService.get的几个调用场景
  3. QQ协议调试器 QQDebugger
  4. Spring Cloud构建微服务架构:Hystrix监控面板【Dalston版】
  5. 高并发下秒杀商品,必须知道的9个细节
  6. Exchange Online基于网络位置限制使用
  7. mac 安装laravel Valet环境
  8. Vivado工程路径太长导致不能生成bit文件
  9. Win11如何更改盘符?Win11更改磁盘驱动器号的方法
  10. 【数据结构笔记38】桶排序、基数排序、多关键字排序、排序算法汇总比较
  11. php无限级回复页面如何嵌套,php无限级评论嵌套实现代码
  12. AOF -- Redis 设计与实现
  13. C语言的中常用的函数
  14. 《机器学习基石》笔记:第一讲
  15. ANSYS Maxwell 2D永磁体建模
  16. 微信小程序通过公众号(服务号)推送通知或提醒步骤及代码(一,获取推送前所需信息)
  17. 【预测模型】预测某地区未来 20 年的人口结构变化趋势(灰色预测模型)
  18. 配置caffe matlab 中遇到的坑
  19. 弘辽科技:淘宝标签商家是什么意思?注意哪些事项?
  20. python弹出框多一个空白框_python – 自定义/删除Django选择框空白选项

热门文章

  1. 商标注册查询入口官网
  2. U盘格式转换/系统限制,无法缓存
  3. 公司计算机d盘怎么设置共享,大神教您win7系统共享D盘的解决教程
  4. Flink流批一体在小米的实践
  5. 2019-05-10 Business Meeting-Making Arrangements
  6. android hmac加密,android hmacSha256 加密
  7. ActivityThread的理解和APP的启动过程
  8. Java 模拟器-接口
  9. matlab2013设置vs2013编译器
  10. VMWARE报错:该主机cpu类型不支持虚拟化性能计数器