美文网首页程序员
Python:二维列表的定义

Python:二维列表的定义

作者: 陈某君 | 来源:发表于2019-12-06 11:28 被阅读0次

写Leetcode的时候突然出现的一个错误,想要记录一下,也不知道起个什么标题好,所有随便起了一个大概相关的标题

以Leetcode的题目开始引入

Leetcode的第72题

image.png

下面是解法(Python)

# 动态规划
# 具体看leetcode讲解
# 注意里面dp定义的细节
class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        n = len(word1)
        m = len(word2)

        if n*m == 0:
            return n+m
        
        # 下面两种dp定义,第一种定义是错的,因为列表内的元素id都相同
        # dp = [[0] * (m+1)] * (n+1)
        dp = [ [0] * (m + 1) for _ in range(n + 1)]
        for i in range(n+1):
            dp[i][0] = i
        for j in range(m+1):
            dp[0][j] = j
        
        for i in range(1, n+1):
            for j in range(1, m+1):
                left = dp[i][j-1] + 1
                down = dp[i-1][j] + 1
                left_down = dp[i-1][j-1]
                if word1[i-1] != word2[j-1]:
                    left_down += 1
                dp[i][j] = min(left, down, left_down)
        return dp[-1][-1]

代码中列表定义的区别

看代码注意到dp = [[0] * (m+1)] * (n+1)dp = [ [0] * (m + 1) for _ in range(n + 1)]是不一样的,两种答案不同,后者才是我们想要的答案,那么为什么会出现这种不同呢?

通过一个简单的例子来看看

image.png

我们发现不同元素的id是一样的,即它们都指向同一个内存地址。


image.png

结论

dp = [[0] * (m+1)] * (n+1)dp = [ [0] * (m + 1) for _ in range(n + 1)]打印出来一样,但前者是列表里面n+1个元素都是指向同一个内存地址,后者是不同的内存地址。所以,建议定义二维列表的时候用列表生成式

相关文章

  • Python学习(二)--列表、元组、集合

    1.列表的定义 列表里可以有多种类型,列表里也可以有列表,在其他语言里叫二维数组,对于Python可以叫做嵌套列表...

  • Python:二维列表的定义

    写Leetcode的时候突然出现的一个错误,想要记录一下,也不知道起个什么标题好,所有随便起了一个大概相关的标题 ...

  • Python 列表

    我们可以使用Python列表保存一系列数据。 Python中,列表类型用[]来表示。 1、定义列表 例:定义列表 ...

  • python的矩阵运算

    python自身不支持矩阵运算,一般想要在python进行矩阵运算:一个方法是自己用二维列表定义矩阵,然后自己写矩...

  • python 列表

    python 列表 list: 定义: 变量=list() #定义空列表 变量=[] list的操作: 增加数...

  • 【慕课网】Python入门笔记 「4」基本数据类型

    【慕课网】Python入门笔记 「4」“组”的概念与定义 [TOC] 1.列表的定义(数组) 列表: 嵌套列表(其...

  • Python_02_列表

    列表 1 列表的定义 List(列表)是Python中使用最频繁的数据类型 列表用[]定义,专门用来存储一串信息 ...

  • Python高级变量类型列表详解

    标签: Python列表 列表的定义 list(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数...

  • NumPy

    一、数据的维度 数据维度的python表示 一维数据:列表和集合类型 二维数据:列表类型多维数据:列表类型 高维数...

  • Python的学习过程

    Python的知识点:1/(1)、列表的定义:List (列表)是Python 中使用最频繁的数据类型,在其他语言...

网友评论

    本文标题:Python:二维列表的定义

    本文链接:https://www.haomeiwen.com/subject/uuwsgctx.html