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是列表,那浅拷贝的是索引。

原文地址:https://www.cnblogs.com/chy-op/p/9865046.html

时间: 2025-01-31 21:47:40

python入门之三元运算,存址方式,深浅拷贝的相关文章

python学习之第十五课时--存址方式及拷贝

不同数据类型在内存中的存址方式 字符串str,一次性创建,不能被修改,只要有修改字符串,就是在重新创建新的字符串 Python底层是c语言写的,c语言没有字符串的说法,字符串是字符数组,所以在内存址是字符数组的方式 图示: 列表list 图示: copy.copy()浅拷贝:只拷贝第一层,下面的指向的原始地址 copy.deepcopy()深拷贝:除底层的字符串或数字外,其他的上层都拷贝,底层的字符串或数字还是指向的原始地址 注意:在使用拷贝时,必须先引入拷贝模块 import copy 一.数

第二十三节,不同数据类型在内存中的存址方式

不同数据类型在内存中的存址方式 字符串str,一次性创建,不能被修改,只要有修改字符串,就是在重新创建新的字符串Python底层是c语言写的,c语言没有字符串的说法,字符串是字符数组,所以在内存址是字符数组的方式

Python基础之小数据池及深浅拷贝

一.小数据池 == (等于) == 官方:判断等号两边的内容是否相同 ? 白话:判断两个人长得是不是一样 is ? 官方:判断两边的内容是不是一个 ? 白话:判断这两个人是不是一个人 a = 10000 b = 10000 print(a == b) is 是通过内存地址进行判断 print(id(a),id(b)) 输出结果 ,内存地址一致 代码块:一个py文件,一个函数,一个模块,一个类,交互模式(终端)下的每一行 先执行代码块,然后小数据池! 代码块机制内容:Python在执行同一个代码块

python基础:元组、字典、深浅拷贝与函数

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 一. 元组(tuple) 1. 元组的特点 元组是固定的,不能修改也不能增减.因为元组不可变,所以更安全,如果可以,尽量不使用list而使用tuple 2.  格式 3.  可用参数 4.  元组的结构(以元组a为例) 当创建一个元组a时,将在内存中开辟一个名为a的内存,然后每个索引位置为一个命名空间,每个命名空间都有一个存储,而真实的数据就存在

Python基础滚固(六)深浅拷贝的趣谈

先来探究下浅拷贝 1 a = [1000, [2000, 3000]] 2 b = a.copy() #来个拷贝 3 print(a is b) 4 print(id(a), id(b)) 5 print(id(a[0]) == id(b[0]), id(a[1]) == id(b[1])) #检查第一层每个序列的id是否一致 6 7 #输出结果 8 False #a 与 b 不是同一个 9 4556627912 4557461256 #a b各自id也不一样 10 True True #a b

python基础(7)--深浅拷贝、函数

1.深浅拷贝 在Python中将一个变量的值传递给另外一个变量通常有三种:赋值.浅拷贝.深拷贝 Python数据类型可氛围基本数据类型包括整型.字符串.布尔及None等,还有一种由基本数据类型作为最基本的元素所组成的像列表.元组.字典等. 在Python中基本数据类型的赋值.深浅拷贝没有任何意义,都是指向同一块内存地址,也不存在层次问题. 下面看基本数据类型的深浅拷贝 import copy n1 = 'abc' n2 = n1 n3 = copy.copy(n1) n4 = copy.deep

深浅拷贝--python(预习中随手写的。因为当时很无聊。。。)

需要知识准备,pyhton基本常识,python的小数据池概念. 深浅拷贝操作需要模块导入:import copy emmm,对于python中的两种数据类型来说. 1.数字,字符串 2.列表,元祖,字典等 浅拷贝:a = copy.copy(b) 如果b是第一种数据类型.a,b的内存地址一致. 如果b是第二种数据类型,拷贝后,a与b的第一层内存地址不同.也就是说id(a) != id(b),但a,b内元素的内存地址依然一致. 深拷贝:a = copy.deepcopy(b) 如果b是第一种数据

爬虫学习 05.Python网络爬虫之三种数据解析方式

爬虫学习 05.Python网络爬虫之三种数据解析方式 引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于r

Python基础入门(三)深浅拷贝、函数、内置函数、文件处理、三元运算、递归

深浅拷贝 import copy copy.copy() #浅拷贝 copy.deepcopy() #深拷贝 num = 110 copynum = num #赋值 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 import copy 2 #定义变量 数字.字符串 3 n1 = 123 4 #n1 = 'nick' 5 print(id(n1)) 6 7 #赋值 8 n2 = n1 9 print(id(n2)) 10 11 #浅