深浅拷贝 set集合
数据类型的补充
编码转换
# s1 = '中国'
# b1 = s1.encode('utf-8')
# # print(b1)-------------->b'\xe4\xb8\xad\xe5\x9b\xbd'
utf-8 bytes --->gbk bytes
# s2 = b1.decode('utf-8')
# # print(s2)---------------中国
# b2 = s2.encode('gbk')
# print(b2)------------------b'\xd6\xd0\xb9\xfa'
数据类型的补充
元组
tu1 = ('laonanhai')
tu2 = ('laonanhai',)
print(tu1,type(tu1))-----------laonanhai <class 'str'>
print(tu2,type(tu2))-----------('laonanhai',) <class 'tuple'>
tu1 = (1)
tu2 = (1,)
print(tu1,type(tu1))-------------1 <class 'int'>
print(tu2,type(tu2))(1,) -----------<class 'tuple'>
元组里面如果只有一个元素且没有逗号,则该数据的数据类型与里面的元素相同
tu1 = ([1, 2, 3])
tu2 = ([1, 2, 3])
print(tu1, type(tu1))----------[1, 2, 3] <class 'list'>
print(tu2, type(tu2))----------[1, 2, 3] <class 'list'>
list
l1 = [111, 222, 333, 444, 555,]
索引为奇数对应的所有元素全部删除。
del l1[1::2]
print(l1)--------------[111, 333, 555]
***在循环一个列表时,最好不要改变列表的大小,会影响你的最终结果
倒着删除:
for index in range(len(l1)-1,-1,-1):
if index % 2 == 1:
del l1[index]
print(l1)--------------------[111, 333, 555]
dict
dic = dict.fromkeys('abc',666)
print(dic)-----------------{'a': 666, 'b': 666, 'c': 666}
dic = dict.fromkeys([11, 22, 33],666)
print(dic)--------------------{11: 666, 22: 666, 33: 666}
dic = dict.fromkeys([1, 2, 3], [])
dic[3].append(666)
print(dic)----------------------{1: [666], 2: [666], 3: [666]}
***在循环dict中,最好不要改变dict的大小,会影响结果或者报错。
dic = {'k1': 'v1', 'k2': 'v2','k3': 'v3','name': 'alex'}for i in dic:
if 'k' in i:
del dic[i]
l1 = []
for key in dic:
if 'k' in key:
l1.append(key)
print(l1)
for key in l1:
del dic[key]
print(dic)---------------------报错(原因是字典在迭代过程中改变大小)
数据类型的转换:
str----------->list split
list--------->str join
tuple-------->list
tu1 = (1, 2, 3)
l1 = list(tu1)
print(l1)------------------[1, 2, 3]
tu2 = tuple(l1)
print(tu2)----------------(1, 2, 3)
dic----------->list list(dic)(列表中的元素只有key)
dic = {'k1': 'v1', 'k2': 'v2','k3': 'v3',}
l1 = list(dic)
print(l1)------------------------['k1', 'k2', 'k3']
print(list(dic.keys()))------------['k1', 'k2', 'k3']
print(list(dic.values()))------------['v1', 'v2', 'v3']
print(list(dic.items()))---------------[('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]
0, '', [], () {} ---> bool 都是Fasle
print(bool([0, 0, 0]))------------True
集合
集合本身是可变的数据类型,不可hash,有增删改查操作
set集合是python中的一个基本数据类型
set中的元素是不重复的,无序的,里面的元素必须是可hash的(int,str,tuple,bool)
set就是dict类型的数据但是不保存value
set集合的增删改查
1增加
.add()
s = {"刘嘉玲", '关之琳', "王祖贤"}
s.add("郑裕玲")
print(s)
s.add("郑裕玲") # 重复的内容不会被添加到set集合中
print(s)
s = {"刘嘉玲", '关之琳', "王祖贤"}
s.update("麻花藤") # 迭代更新
print(s)
2.删除
s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李若彤"}
item = s.pop() # 随机弹出⼀一个.
s.remove("关之琳") # 直接删除元素
# s.remove("⻢马⻁虎疼") # 不存在这个元素. 删除会报错
s.clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和 dict区分的.
3.修改
set集合中的数据没有索引. 也没有办法去定位一个元素. 所以没有办法进行直接修改.
# 我们可以采用先删除后添加的方式来完成修改操作
s.remove("刘嘉玲")
s.add("赵本山")
4.查询
# set是⼀一个可迭代对象. 所以可以进行for循环
for el in s:
print(el)
set集合本身是可以发生改变的. 是不可hash的. 我们可以使用frozenset来保存数据.
frozenset是不可变的. 也就是⼀个可哈希的数据类型
深浅拷贝
浅拷贝. 只会拷贝第⼀层. 第二层的内容不会拷贝. 所以被称为浅拷贝
lst1 = ["何炅", "杜海海涛","周渝⺠民", ["麻花藤", "⻢马芸", "周笔畅"]]
lst2 = lst1.copy()
深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产生⼀个改变另⼀个跟着 改变的问题
import copy
lst1 = ["何炅", "杜海海涛","周渝⺠民", ["麻花藤", "⻢马芸", "周笔畅"]]
lst2 = copy.deepcopy(lst1)
深浅拷贝 set集合的更多相关文章
- python基础知识四 小数据池,深浅拷贝,集合+菜中菜
四.小数据池,深浅拷贝,集合+菜中菜 1小数据池 --缓存机制(驻留机制) '==' 判断两边内容是否相等 'is' 基于内存地址进行判断是否相同 a = 10 b = 10 print(a ...
- python 学习笔记5(深浅拷贝与集合)
拷贝 我们已经详细了解了变量赋值的过程.对于复杂的数据结构来说,赋值就等于完全共享了资源,一个值的改变会完全被另一个值共享. 然而有的时候,我们偏偏需要将一份数据的原始内容保留一份,再去处理数据,这个 ...
- 12 python 初学(深浅拷贝、集合)
深浅拷贝:参考:http://www.cnblogs.com/yuanchenqi/articles/5782764.html s = [[1, 2], 'lily', 'hello'] s2 = s ...
- Python学习(006)-深浅拷贝及集合
深浅拷贝 import copy husband=['xiaoxin',123,[200000,100000]] wife=husband.copy() #浅拷贝 wife[0]='xiaohong ...
- day06——小数据池、深浅拷贝、集合
day06 小数据池 小数据池--缓存机制(驻留机制),只是一种规格,不会实际的开辟一个空间 == 判断两边内容是否相等 ***** # a = 10 # b = 10 # print(a == b) ...
- 深浅拷贝、集合set、函数、日志
#-----深浅拷贝---- import copy a = ["xiaoming",111,[5000,2000]] b = a print("b:%s" % ...
- python27期day06:小数据池、深浅拷贝、集合、作业题。
0.pycharm是代码块.黑窗口是小数据池.如下图: 1.驻留机制(长得像的共用一个内存地址)分小数据池缓存机制:后期开发时能明确知道.为什么不能正常使用.把经常用的东西放入规则(黑窗口)里. 数字 ...
- Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数
一.上节课的重点回顾: 1.类名加括号其实就是执行类的__init__方法: 2.int a.创建方式 n1 = 123 #根据int类创建了一个对象 n2 = int(123) #根据int类创建一 ...
- 3.python基础补充(集合,collection系列,深浅拷贝)
一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复 ...
随机推荐
- VIOS挂载ISO文件
6.VIOS挂载ISO文件 1.给vhost建立虚拟设备 mkvdev -vadapter vhostX -fbo -dev cdx 2.建立存放ISO的资料库 mkrep -sp rootvg -s ...
- POJ3436
题目链接:http://poj.org/problem?id=3436 题目大意: 一台电脑可以分成P个部分,在生产过程中,半成品电脑有的部分已经完成(记为1),而有的部分还没有完成(记为0).电脑生 ...
- 引入mybatis-plus报 Invalid bound statement错误怎么办,动动手指改一个地方就行
错误 Mybatis-Plus (简称MP) 是mybatis的一个增强工具,在mybatis的基础上只做增强不做改变,简化了开发效率.其实就是帮我们封装了一些简单的curd方法,可以直接调用,不必再 ...
- [CSharp]传一个包含多个属性的对象,只改变其中个别属性值的方法
需求 假如有这么一个需求,一个对象Person内的属性设置外包给了另外一个类Options, 而要设这个Person对象的属性,就必须传一个Options实例, 但又不能每个属性重新设一遍,只设要修改 ...
- 【JVM】体系结构及其细节
JVM JVM运行在操作系统之上,与硬件没有直接的交互.引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译.Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语 ...
- 漫谈碎片化学习(Fragmentation learning)
碎片化学习(Fragmentation Learning) 从一个互联网小段子讲起: 某天,美国情报部门FBI应奥巴马的要求,做相关汇报:“报告总统,经FBI分析,中国‘短信’中35%是节日祝福语,2 ...
- 关于CAS单点登录配置文件误修改导致的JSP报错问题
weblogic环境下搭建CXF环境时,为了避免CAS拦截webservice服务URL所以设置CAS为不拦截,无修改了CAS配置的其它地方导致工程启动正常,一旦访问就会报JSP的错误. [Servl ...
- Parrot os配置源更新
每次都是忘了怎么配置,去官网查文档,这记一下 一.源文件配置注意 首先要注意Parrot官方软件库的默认更新源文件不在 /etc/apt/sources.list 而是 /etc/apt/source ...
- 关于服务器运维人员,该如何管理很多VPS呢?
众所周知,服务器运营人员的工作内容,主要围绕着公司上下所有服务器.网络等硬件平台的运维工作,对每台服务器的状况,如磁盘.内存.网络.CPU等资源情况都要有明确的了解,还要定期对服务器进行巡检和修复,避 ...
- Java并发编程 (一) 导读
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.并发编程相关技术栈 1.内容主要为高并发的解决思路与手段,具体涉及: 2.涉及的基础知识与核心知 ...