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

news/2024/5/19 23:24:51/

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 行的最小值。


http://www.ppmy.cn/news/46715.html

相关文章

人社LEAF平台架构及其主要技术架构特点

人社LEAF平台架构及其主要技术架构特点https://wheart.cn/so/home?mindex&id31525d77-de79-11ed-96fa-52540016e6ac 在前面的系列文章中介绍了社会保险管理信息系统核心平台三版(以下简称核三)的技术亮点,这些技术亮点主要是由核三的技…

sql的左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)的详解

sql的左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)的详解: 这里以两个表的连表为例: 创建表1:为人员表,这里将它当做左表; CREA…

DETR【论文阅读】

End-to-End Object Detection with Transformers 1. Introduction 发表:ECCV 2020影响:在目标检测上使用了一种全新的架构,是里程碑式的工作。简单优雅统一的结构,不再依赖于人的先验知识(anchor生成,nms…

javaweb笔记2

JSP 1、在webapp的根目录下新建一个index.jsp文件,访问以下地址: http://localhost:8080/webappName/index.jsp 实际上访问这个index.jsp文件,底层执行的是:index_jsp.class这个程序。 这个index.jsp会被tomcat翻译成index_jsp.j…

vue项目使用elementui上传组件 打包后报错t.upload.addEventListener is not a function的解决方案

错误问题 Vue:xhr.upload.addEventListener is not a function 这个问题是因为mockjs改动了axios里面XMLHttpRequest对象致使的 根据axios源码 l是一个XMLHttpRequest对象 mockJs把l变量从XMLHttpRequest对象改为了MockXMLHttpRequest对象 因此l.upload是一个空对象 空对象…

K8s为什么要放弃Docker

公司定期分享整理的资料 放弃始由 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation 2020 年,k8s 1.20 终于正式向 Docker “宣战”:kubelet将弃用 Docker 支持,并将在未来的版本中完全移除。…

git使用规范文档

git使用规范文档 Git使用规范流程图 开发人员操作步骤: 第一步:clone代码 在你的本地代码库进行从远程仓库clone代码操作(100%表示clone完成) 进入项目文件,右键Git Bash Here 切换到你所进行开发的分支上 拉取该分…

故障重现, JAVA进程内存不够时突然挂掉模拟

背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize # This output file may be truncated or incomplete. # # Out of Memory Error (os_linux.cpp:26…

小红书达人种草怎么收费?

随着小红书平台的快速发展,用户数量在不断的上升,市场上也涌现出了很多的小红书营销公司,小红书营销主要是以小红书代写代发、品牌植入广告等方式来做品牌种草品宣。 小红书达人种草怎么收费这个问题,相信很多商家朋友都非常关心…

Ubuntu18.04 Gitkraken GitCracken

参考资料: ubuntu 安装 Gitkraken 9.x Pro 版本_gitkraken ubuntu CSDN博客【GitCracken】v8.1.1_gitcracken不起作用_等风来不如迎风去的博客-CSDN博客 关键: 材料1:需要使用linux/GitKraken-v8.1.1.tar.gz材料2:需要使用wcxo…

【Linux】 密码相关。pwconv

密码相关。pwconv 在linux中,早期的用户密码(经过加密)存放在/etc/passwd文件之中,但是大多数的应用程序通常都需要读取这个文件,所以会造成一定的安全隐患 因此后来的linux(centos)系统将这个…

第二十三章 弹跳训练

一夜无话。 看着跳廊外静静挂在空中的上弦月,张弦月与下弦月,巴哥奔脑海里浮现出月光下那泛着淡金色光芒的草垛,那绿莹莹黄澄澄的池塘,那紫色拱门,那藏青小球,那逐层凹陷的螺旋状圆盘,那闪着或青…

openpnp - 顶部相机 - 辅助光(环形灯)的电路原理图

文章目录 openpnp - 顶部相机 - 辅助光(环形灯)的电路原理图概述END openpnp - 顶部相机 - 辅助光(环形灯)的电路原理图 概述 同学帮我做的简易灯板设计不太合理, 发热量极大. 想看看商用的环形灯电路啥样的, 如果有可能, 自己做块灯板, 塞进商用环形灯外壳中. 拆解了一个环形…

洛谷题解【入门一】顺序结构

目录 B2002 Hello,World! 题目描述 输入格式 输出格式 输入输出样例 B2025 输出字符菱形 题目描述 输入格式 输出格式 输入输出样例 P1000 超级玛丽游戏 题目背景 题目描述 输入格式 输出格式 输入输出样例 P1001 AB Problem B2005 字符三角形 题目描述 输…

ROS学习——艰辛的环境安装之路一Ubuntu

文章目录 Ubuntu安装和下载页面设置安装Vmware Tools安装VSCODE用几个常用命令简单熟悉下Ubuntu Ubuntu 安装和下载 Ubuntu的安装和下载 看这个链接 Ubuntu安装和下载1 或者这个链接 Ubuntu安装和下载2 页面设置 安装Vmware Tools 看这个链接 VMware Tools的介绍和安装 安…

Qt——Qt控件之按钮-QDialogButtonBox对话框按钮盒子控件的使用总结(例程:自定义按钮)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》

Spimes x5.0主题模板全开源源码/Typecho主题模板

☑️ 品牌:Typecho ☑️ 语言:PHP ☑️ 类型:主题模板 ☑️ 支持:PCWAP 🎉有需要的朋友记得关赞评,底部分享获取!!! 🎉 ✨ 源码介绍 Spimes x5.0主题模板全开…

SQL Server内存架构

2. 内存架构 所谓内存架构,这里是指SQL Server实例内存管理、使用与相关逻辑设计及实现等方面内容。更具体一点,就是讲SQL Server实例分配、管理和使用其内存空间的内部机制。本书1.1节中我们已经讲过,SQL Server实例包括多个内部机制各不相同的内存区域,在此,我们将讲解…

论文 : Multi-Channel EEG Based Emotion Recognition Using TCNBLS

Multi-Channel EEG Based Emotion Recognition Using Temporal Convolutional Network and Broad Learning System 本文设计了一种基于多通道脑电信号的端到端情绪识别模型——时域卷积广义学习系统(TCBLS)。TCBLS以一维脑电信号为输入,自动提取脑电信号的情绪相关…

牛顿法、梯度下降法与拟牛顿法

牛顿法、梯度下降法与拟牛顿法 0 引言1 关于泰勒展开式1.1 原理1.2 例子 2 牛顿法2.1 x 为一维2.2 x 为多维 3 梯度下降法4 拟牛顿法4.1 拟牛顿条件4.2 DFP 算法4.3 BFGS 算法4.4 L-BFGS 算法 0 引言 机器学习中在求解非线性优化问题时,常用的是梯度下降法和拟牛顿…