浅拷贝与深拷贝例题与思考

2023-10-30


title: “浅拷贝与深拷贝”
author: “hou wei”
date: “2023-04-17”
output: html_document

knitr::opts_chunk$set(echo = TRUE)

问答题

0.请问你是如何理解 ”在 Python 中,变量不是盒子” 这句话的?

变量不是将元素放进变量里面,变量只是与数据挂钩,相当于赋值一个引用。

1.请问下面代码执行后,y 的值是多少?

x = 1
y = x
x = 2
y

y的值为1,此处改变了变量的引用所以,y值是不会变的

2. 请问下面代码执行后,x == y 返回的结果是 True 还是 False?

x = [1, 2, 3]
y = x
y[1] = 1
x == y

返回的结果是Ture。此处只改变了值没有改变引用所以会变换。

3.请问下面代码实现的是浅拷贝还是深拷贝?

x = [[1, 2, 3], [4, 5, 6]]
y = x[:]

我们使用切片还有x.copy()都是浅拷贝。

4.请问下面代码执行后,列表 x 和 y 的内容分别是什么?

x = [[1, 2, 3], [4, 5, 6]]
y = x.copy()
y.append(7)
y[1].append(8)
x
y

x内容为[[1, 2, 3], [4, 5, 6, 8]],y的内容为[[1, 2, 3], [4, 5, 6, 8], 7]。此处浅拷贝只是拷贝了外层对象,如果涉及到嵌套,内层的元素还是引用传递。如果是引用传递的话,则为动一处而变全身。

5.请问下面代码执行后,列表 s 的内容是什么?

s = [1]
s.append(s)
s

s列表的内容将会是[1, [...]]这会使Python进入无限循环,因为添加s之后你会发现原来的列表也会变,之前列表变了之后,你添加的这个也应该是变化的,所以无解了就。

动动手

0.创建一个 88 x 88 的随机整数矩阵(二维列表),然后匹配用户输入的整数是否与其中某元素相等,如果相等则打印其行号和列号。

要求1:随机整数取值范围 0~1024
要求2:需找出所有匹配的元素
思路:此处分为两步,第一步创建一个符合要求的二维列表,第二步使用for循环遍历,使用while函数或者if判断,如果与输入整数相等,则打印其行号与列号。

num = input("请输入一个代匹配的整数:")
import random
matrix = []
for i in range(88):
    row = []
    for j in range(88):
        row.append(random.randint(0,1024))
    matrix.append(row)

for i in range(88):
    for j in range(88):
        if matrix[i][j] == num:
            print(i,j)

1.请编程找出矩阵中的幸运数字。

说明:假设给定一个 m * n 的矩阵(矩阵中数值的取值范围是 0~1024,且各不相同),如果某一个元素的值在同一行的所有元素中最小,并且在同一列的所有元素中最大,那么该元素便是幸运数字。
假设给定的矩阵如下:

matrix = [[10, 36, 52],
          [33, 24, 88],
          [66, 76, 99]]

那么输出结果应该是 66(同时满足同一行的所有元素中最小,并且在同一列的所有元素中最大)。

此题也是分为两步,第一步创建矩阵,要求是 m * n,取值范围是0~1024,而且各不相同。第二步是进行比较同行最小,同列最大,也就是说是max(matrix[i][j], max_col[j],min(matrix[i][j], min_row[i])如果同行最小与同列最大相等,就说明其是我们需要的元素。

matrix = [[10, 36, 52],
          [33, 24, 88],
          [66, 76, 99]]
# 算出举证的行数与列数,方便后面for循环遍历
row = len(matrix)
col = len(matrix[0])

#先快速生成一个指定长度的列表,列表中的元素初始化为同一个值,这样做可以简化程序代码,提高程序的可读性。
min_row = [1024] * row
max_col = [0] * col

# 遍历矩阵中的每一个元素
# 找到每行中最小的元素,并将它们存放到列表min_row中
# 找到每列中最大的元素,并将它们存放到列表max_col中
for i in range(row):
    for j in range(col):
        min_row[i] = min(matrix[i][j], min_row[i])
        max_col[j] = max(matrix[i][j], max_col[j]
        
# 遍历矩阵中的每一个元素
# 判断是否同时满足“同一行的所有元素中最小”和“同一列的所有元素中最大”
for i in range(row):
    for j in range(col):
        if matrix[i][j] == min_row[i] and matrix[i][j] == max_col[j]:
            print(matrix[i][j])

在这段代码中,min(matrix[i][j], min_row[i]) 的作用是求矩阵中第 i 行的最小值。首先,程序将 min_row[i]的初始值设为一个很大的数(这里是 1024),然后遍历矩阵中第 i 行的所有元素,将每个元素与 min_row[i] 比较,取其中的最小值。最终,min_row[i] 中存储的就是矩阵中第 i 行的最小值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅拷贝与深拷贝例题与思考 的相关文章

  • Pandas:将增量数字添加到一列的重复值的后缀,这些重复值按另一列的值分组并按索引排序

    我试图将下划线和增量数字添加到按索引排序的任何重复值以及由另一列定义的组内 例如 我希望 化学 列中的重复值具有下划线和增量数字 并按索引排序并按 循环 列分组 df pd DataFrame 1 1 1 1 1 1 2 2 2 2 2 2
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • 如何在 Pandas Python 中按 id 对行进行排名

    我有一个像这样的数据框 id points1 points2 1 44 53 1 76 34 1 63 66 2 23 34 2 44 56 我想要这样的输出 id points1 points2 points1 rank points2
  • Python Requests 库重定向新 url

    我一直在浏览 Python 请求文档 但看不到我想要实现的任何功能 在我的脚本中我设置allow redirects True 我想知道该页面是否已重定向到其他内容 新的 URL 是什么 例如 如果起始 URL 为 www google c
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • 使用 Pandas 从 csv 文件读取标题信息

    我有一个包含 14 行标题的数据文件 在标头中 有经纬度坐标和时间的元数据 我目前正在使用 pandas read csv filename delimiter header 14 读取文件 但这只是获取数据 我似乎无法获取元数据 有人知道
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • 列表推导式和 for 循环中的 Lambda 表达式[重复]

    这个问题在这里已经有答案了 我想要一个 lambda 列表 作为一些繁重计算的缓存 并注意到这一点 gt gt gt j for j in lambda i for i in range 10 9 9 9 9 9 9 9 9 9 9 Alt
  • Python 在哪些系统上不使用 IEEE-754 双精度浮点数

    Python 对 IEEE 754 浮点运算进行了各种引用 但不保证1 https docs python org 3 tutorial floatingpoint html 2 https pythondev readthedocs io
  • Python在没有pandas的情况下解码excel表

    我正在尝试在 python 中读取 excel 文件而不使用pandas or xlrd 我一直在尝试将结果转换为bytes to utf 8没有任何成功 xls 文件中的数据 colA colB colC spc 1D0 20190705
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • 将图与热图(可能是对数)配对?

    How to create a pair plot in Python like the following but with heat maps instead of points or instead of a hex bin plot
  • 哪种方式最适合Python工厂注册?

    这是一个关于这些方法中哪一种被认为是最有效的问题 Pythonic 我不是在寻找个人意见 而是在寻找惯用的观点 我的背景不是Python 所以这会对我有帮助 我正在开发一个可扩展的 Python 3 项目 这个想法类似于工厂模式 只不过它是
  • 如何检测一个二维数组是否在另一个二维数组内?

    因此 在堆栈溢出成员的帮助下 我得到了以下代码 data needle s which is a png image base64 code goes here decoded data decode base64 f cStringIO
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • tf.print() vs Python print vs tensor.eval()

    看来在Tensorflow中 至少有三种方法可以打印出张量的值 我一直在读here https www freecodecamp org news debugging tensorflow a starter e6668ce72617 an
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • 为什么从 openAI 导入 Universe 模块时出现“无效语法”错误

    当我导入时universe来自 openAI 的模块 我收到以下错误 Traceback most recent call last File
  • 如何有效地比较 pandas DataFrame 中的行?

    我有一个 pandas 数据框 其中包含雷击记录以及时间戳和全球位置 格式如下 Index Date Time Lat Lon Good fix 0 1 20160101 00 00 00 9962692 7 1961 60 7604 1
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不

随机推荐

  • 数据结构小白之冒泡排序算法

    1 冒泡排序 1 1 思路 冒泡排序的每一轮从杂乱无章的数组头部开始 每两个元素之间进行交换 直到这一轮当中最大或者最小的元素放在数组的尾部 然后去不断重复这个过程 ps 冒泡排序的核心在于双循环的编写 外层循环用来进行数组的遍历 内层循环
  • 创建利润中心在利润中心组选择时提示不存在利润中心组

    已经KCH1创建好利润中心组的情况下KE51选刚才创建好的利润中心组依然会有如题这样的提示 原因是没有0KE5进行成本控制范围设置 如图下图 设置好后再KE51创建利润中心就可以了
  • 《代码大全2》第4章 关键的“构建“决策

    目录 前言 本章主题 4 1 选择编程语言 4 2 编程约定 4 3 你在技术浪潮中的位置 4 3 1 深入一种语言去编程 的例子 4 3 2 在一种语言上编程 和 深入一种语言去编程 的区别 4 4 选择主要的构建实践方法 核对表 主要的
  • Mac使用国内源安装homebrew

    记录一下使用国内镜像源重装homebrew 在终端输入以下命令 bin bash c curl fsSL https gitee com cunkai HomebrewCN raw master Homebrew sh 会有如下提示 开始执
  • Android_AlarmManager(全局定时器)

    一 简介 AlarmManage有一个AlarmManagerServie服务程序 该服务程序才是正真提供闹铃服务的 它主要维护应用程序注册下来的各类闹铃并适时的设置即将触发的闹铃给闹铃设备 在系统中 linux实现的设备名 为 dev a
  • 【 NLP】如何减小预训练语言模型?

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 【SCOI2010】股票交易

    Description SCOI2010 股票交易 在T天时间内 第 i 天股票购入价为 ap i 出售价为 bp i 每天最多购入 as i 股 最多出售 bs i 股 任意时刻手中的股票数不能超过 Maxp 且两次交易至少间隔 W 天
  • tomcat为什么把那个文件取名为catalina

    内部寓意就是tomcat的脚本文件 寄寓 是个小岛的名字 开发者曾在岛上生活过 Tomcat的这个单词的意思是 公猫 因为它的开发者姆斯 邓肯 戴维森希望用一种能够自己照顾自己的动物代表这个软件 于是命名为tomcat 它的Logo兼吉祥物
  • 分布式环境下的数据一致性

    1 互联网技术的四大法宝 多线程 分布式 异步 缓存 2 事务 编程式事务 3乐观锁 悲观锁 基于状态机的乐观锁
  • Android中引用sweet-alert-dialog以及遇到的问题解决

    概述 sweet alert dialog是一个带动画效果的自定义对话框样式 可以让你的Android程序的对话框优美很多 GitHub地址 Android Studio中引用 repositories mavenCentral depen
  • 【解决vscode终端输出中文乱码问题图文教程】

    全网最全解决vscode运行C C 终端输出乱码问题图文教程 解决vscode终端输出中文乱码问题 强推 方法二 少走几年弯路 乱码原因 方法一 永久性 方法二 永久性 强力推荐 附加 CMD修改成旧控制台 方法三 临时性 如果之前尝试了其
  • kafka入门,发送原理和生产者重要参数(三)

    发送原理 在消息发送过程中 涉及两个线程 main线程和Sender线程 在main线程中创建了一个双端队列 RecordAccumulator Sender过程不断从RecordAccumulator中拉取消息发送到Kafka Broke
  • Maven本地仓库安装jar包

    开发过程中的jar包依赖 通常是通过中央仓库 阿里云仓库等地方直接下载的 但是有一些jar包是不太容易下载 或者说对应的仓库中没有对应的jar包 比如ojdbc6 11 2 0 1 0 jar这个jar包 maven中央仓库中就没有这个版本
  • 基于 WEB 的室内温湿度监测系统(树莓派)

    一 项目介绍 本实验通过 DHT11 模块测量大气中温湿度 利用树莓派多功能的用途 将温湿度测量结果显示到网页 并包含历史数据 实时折线图表示 二 实验介绍 1 实验原材料 树莓派 Raspberry 4 Model B DHT11 v1
  • 计算机添加启动程序,电脑的开机启动项怎么设置?

    每次电脑开机都一堆软件争先恐后的在自动启动 很影响我们的正常使用 电脑开机时间也越来越长 这时灵活的设置我们的开机启动项就很有必要了 能帮助我们更高效的使用电脑 那么 我们该怎么设置这些开机自启的软件呢 方法一 手动设置 1 添加电脑的开机
  • 【MongoDB】基于Docker的MongoDB replica set(副本集)更换节点

    之前搭的副本集 1主 1从 1投票 今天要进行把投票节点切换服务器 首先 在新服务器上启动mongodb服务 然后 在主节点上对集群配置进行更新 rs0 PRIMARY gt cfg rs conf rs0 PRIMARY gt cfg m
  • yolov5训练结果解析

    在每次训练之后 都会在runs train文件夹下出现一下文件 如下图 一 weights 包含best pt 做detect时用这个 和last pt 最后一次训练模型 二 confusion 1 混淆矩阵 混淆矩阵是对分类问题的预测结果
  • 【无标题】数组转化成tree

    在这里插入图片描述 父数组 father G1 G2 G3 G4 G5 子数组 son 1 2 3 4 5 数组转化成tree
  • java实现金额数字转换为中文大写

    import java io import java lang IllegalArgumentException public class ConvertNum 把金额阿拉伯数字转换为汉字表示 小数点后四舍五入保留两位 还有一种方法可以在转
  • 浅拷贝与深拷贝例题与思考

    title 浅拷贝与深拷贝 author hou wei date 2023 04 17 output html document knitr opts chunk set echo TRUE 问答题 0 请问你是如何理解 在 Python