python对二维数组赋值问题

 更新时间:2023年08月18日 08:45:57   作者:study_&  
这篇文章主要介绍了python对二维数组赋值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python对二维数组赋值

最近做力扣遇到一个问题,

obstacleGrid=[[0],[1]]
m = len(obstacleGrid)
n = len(obstacleGrid[0])
# 需要考虑m=1 n=1
dp = [[0] * n] * m

但是当写dp[0][0]=1时,dp[1][0]也会自动变1,理由

定义的时候dp的m行是同一个[0]*n的索引,所以一个被改变,其他的都被改变。

靠谱点的初始化方式

dp = [[0 for _ in range(n)]  for _ in range(m)]

或者深拷贝

import copy
dp = []
a = [0]*n
for i in range(m):
    dp.append(copy.deepcopy(a))

python创建二维数组的不同方式以及整列赋值的问题

会出现整列赋值的创建方式

在C中输入二维数组形式非常熟悉(采用codeblocks):输入一行的数字,每个之间空格隔开,回车继续输下一行

在python中采用同样的形式输入(采用PyCharm):

代码如下:

输入:

其中输入3->回车,输入4->回车,表示构建了一个A[4][3]的矩阵。

输入1 2 3->回车,输入4 5 6->回车,输入7 8 9->回车,输入0 1 2->回车

输出:

这样创建二维列表在后续的使用中遇到了问题。

比如我的本意是把第二行第二个元素赋值为1,而输出如下

他将我每一行的第二列都赋值为了1,原因是因为我的二维列表创建方式导致了[[]]*4表示的是4个同时指向一个列表的引用,也就是4行都指向的是同一个列表,改变任意一个都会改变每一行的当列数据。

避免浅拷贝的创建方式

可以知道,上图的两种创建方式都可以避免浅拷贝,总结来说只要对于行不要使用*M这种写法,都可以避免。

第一种创建方式可以在创建时就固定二维列表的行和列。

第二种创建方式可以初始只能固定行数,每一行的数据可以在后续append进去。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于Python 常用获取元素 Driver 总结

    关于Python 常用获取元素 Driver 总结

    今天小编就为大家分享一篇关于Python 常用获取元素 Driver 总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python编程获取终端命令行参数示例

    Python编程获取终端命令行参数示例

    这篇文章主要为大家介绍了Python编程获取终端命令行参数示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python使用Py2neo创建Neo4j的节点和关系

    Python使用Py2neo创建Neo4j的节点和关系

    Neo4j是一款开源图数据库,使用Python语言访问Neo4j可以使用Py2neo。本文介绍了使用Py2neo访问Neo4j,批量创建节点和关系的方法
    2021-08-08
  • 19个Python Sklearn中超实用的隐藏功能分享

    19个Python Sklearn中超实用的隐藏功能分享

    今天跟大家介绍 19 个 Sklearn 中超级实用的隐藏的功能,这些功能虽然不常见,但非常实用,它们可以直接优雅地替代手动执行的常见操作
    2022-07-07
  • Python Flask 模型介绍和配置方法

    Python Flask 模型介绍和配置方法

    flask是基于MTV的结构,其中M指的就是模型,即数据模型,在项目中对应的是数据库,下面纪录以mysql和orm方式连接数据库的方法,对Python Flask 模型介绍和配置方法感兴趣的朋友跟随小编一起看看吧
    2022-12-12
  • Django 表单模型选择框如何使用分组

    Django 表单模型选择框如何使用分组

    这篇文章主要介绍了Django 表单模型选择框如何使用分组,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)

    python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)

    这篇文章主要介绍了python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python随机3分钟发送一次消息完整代码

    python随机3分钟发送一次消息完整代码

    最近我接到这样的任务需求有一个实时任务,想要间隔3分钟发送,最近的一次消息,接下来通过本文给大家分享python随机3分钟发送一次消息,需要的朋友可以参考下
    2024-03-03
  • python迭代器实例简析

    python迭代器实例简析

    这篇文章主要介绍了python迭代器,以一个简单实例的形式分析了Python中迭代器的用法及注意事项,需要的朋友可以参考下
    2014-09-09
  • 对Django url的几种使用方式详解

    对Django url的几种使用方式详解

    今天小编就为大家分享一篇对Django url的几种使用方式详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论