python入门之三元运算,存址方式,深浅拷贝
三元运算
格式:
name = 值1 if 条件 else 值2
如果条件为True,那么将值1赋值给name,条件为False,那么将值2赋值给name
存址方式
不同的数据类型在内存中的存址方式不同
列表和字符串的区别:内存中,列表的每个元素占据一个内存空间,没有固定的元素数量限制,每个元素空间之间存在一种链表来记录单个元素空间的上一个元素和下一个元素地址,所以可以不用连续存储,有链表的存在,即使不连续存储,也是有序的。所以对于列表一些函数的调用,在列表本身做修改,而这个列表并不会真正改变成其他的列表。而字符串,在内存中定义了固定的长度,并非动态的,只要调用函数做了修改,就变成其他新的字符串,所以字符串是一次性创建的,若要修改,就必须重新创建
深浅拷贝
对于数字和字符串,赋值和深拷贝和浅拷贝是无意义的,因为其永远指向同一个内存地址
import copy
n2 = copy.copy(n1) 浅拷贝
n2 = copy.deepcopy(n1) 深拷贝
若n1是数字或字符串,不管是深拷贝还是浅拷贝,内存地址都和n2一样
若n1是字典,浅拷贝后,拷贝的是keys,内存里n1和n2的keys是不同的,但是不同的keys指定相同的values,所以浅拷贝是最外层的keys的地址变了,而内存的values地址并没有改变,所以n1和n2的内存地址不同。而深拷贝,是除了最里层外的所有层(除了最里层 是因为最里层绝对是数字或者字符串,这两种对于深浅拷贝无意义)都拷贝。若n1是列表,那浅拷贝的是索引。
python入门之三元运算,存址方式,深浅拷贝的更多相关文章
- python学习打卡 day07 set集合,深浅拷贝以及部分知识点补充
本节的主要内容: 基础数据类型补充 set集合 深浅拷贝 主要内容: 一.基础数据类型补充 字符串: li = ["李嘉诚", "麻花藤", "⻩海峰 ...
- Python全栈开发之3、深浅拷贝、变量和函数、递归、函数式编程、内置函数
一.深浅拷贝 1.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy # 定义变量 数字.字符串 # n1 = 123 n1 ...
- Python开发【第二章】:深浅拷贝剖析
Python深浅拷贝剖析 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 一.对象赋值 ...
- Python学习基础(二)——集合 深浅拷贝 函数
集合 # 集合 ''' 集合是无序不重复的 ''' # 创建列表 l = list((1, 1, 1)) l1 = [1, 1, 1] print(l) print(l1) print("* ...
- python学习笔记:第7天 深浅拷贝
目录 1. 基础数据类型补充 2. set集合 3. 深浅拷贝 1. 基础数据类型补充 (1)join方法 join方法是把一个列表中的数据进行拼接,拼接成字符串(与split方法相反,split方法 ...
- Python爬虫之三种数据解析方式
一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...
- python中list,tuple,dict,set等深浅拷贝的问题记录
对于字典.元祖.列表 而言,进行赋值.浅拷贝和深拷贝时,其内存地址的变化是不同的. 1.赋值 赋值,只是创建一个变量,该变量指向原来内存地址,如: 1 2 3 n1 = {"k1" ...
- python is == 的区别, 编码与解码.深浅拷贝
一. is == 的区别 双等表示的是判断是否相等, 注意. 这个双等比较的是具体的值.而不是内存地址 is 比较的是地址 编码回顾 除了了ASCII码以外, 其他信息不能直接转换 编码和解码的时 ...
- Python学习日记(五)——初识函数(set、深浅拷贝、三目运算、函数、全局变量和局部变量)
基本数据类型补充 set set集合,是一个无序且不重复的元素集合 #创建 s = {11,22,33,44}#类似字典 s = set() #转换 l = (11,22,33,44) s1 = se ...
随机推荐
- linux应用之nginx的安装及配置(centos)
Ubuntu/CentOS 系统上安装与配置Nginx 一.在线安装: Ubuntu:sudo apt-get install nginx CentOS: sudo yum install nginx ...
- Linux下抓包工具tcpdump应用详解
TCPDUMP简介 在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一.sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的.对于网络管理人员来说 ...
- Swift下表和方法
本文将同时阐述Swift的方法和下标,因为根据我的理解,从某种程度上讲,下标的本质也是方法. 方法 众所周知,在支持面向对象的语言里,方法一般分为两种:实例方法和类方法(在有的语言中,「类方法」被称为 ...
- win10 下安装linux子系统
一.开发人员选项 打开控制面板->程序与功能->启用或关闭windows功能 勾选 [适用于linux的windows子系统] 选项 打开win10设置 找到更新与安全 启动开 ...
- poll的使用
#define POLL_FD_SIZE 1024 int doServicePoll(int listenFd) { struct sockaddr_in cliAddr; socklen_t le ...
- ubuntu 禁止错误信息 report 问题弹出
发现ubuntu只要出现点问题就会提示要不要report error, 光点cancel就点烦了. 而且今天重新安装了一台ubuntu结果开机就蹦出error, 好烦啊. 下面说个特别有效的解决办法, ...
- OpenFileDialog无法弹出的解决方法
今天在写一个socket通信的winform小程序,由于socket的receive方法会阻塞线程,所以就使用了多线程解决.但在新建的线程中创建OpenFileDialog并调用其ShowDialog ...
- 性能测试之Jmeter学习(一)
一.Jmeter的安装: 1.安装配置要求: Java版本: Jmeter要求完全兼容的Java6或更高版本(建议安装java 8或以上版本): 操作系统:是一个100%的Java程序,它在任何支持完 ...
- 使用IntelliJ IDEA配置Tomcat(入门)
一.下载Tomcat 1.进入官网http://tomcat.apache.org/,选择download,下载所需Tomcat版本. 此处我们选择下载最新版本Tomcat 9. 注意有zip和exe ...
- 如何在.net项目中使用全局程序集GAC
在解决已有.net网站问题过程中(之前的同事写的),发现出现dll不存在的情况,build报错 在bin目录下找不到该dll,后来发现是全局程序集,存储在C:\Windows\assembly目录下 ...