Python基础学习Day7 基础数据类型的扩展 集合 深浅copy
一、基础数据类型的扩展
1.1GBK ---> UTF - 8
# str --->bytes
s1 = '太白' # 字符串是unicode编码
b1 = s1.encode('gbk') # 翻译成gbk编码的形式
print(b1) # b'\xcc\xab\xb0\xd7' 两位
s2 = b1.decode('gbk') # 解码成字符串
print(s2)
b2 = s2.encode('utf-8') # 翻译成UTF- 8编码的形式
print(b2) # b'\xe5\xa4\xaa\xe7\x99\xbd' 三位
1.2 字母可以直接在GBK和UTF-8之间转换
s1 = 'alex'
b1 = s1.encode('gbk')
s2 = b1.decode('utf-8')
print(s2)
注意:上面的代码成立:因为utf-8 gbk Unicode等编码的英文字母,数字,特殊字符都是映射的ASCII码。
2、元组
# 如果元组中只有一个数据,且没有逗号,该元组与里面的数据的数据类型相同。
tu1 = (1,)
tu2 = ('alex')
tu3 = ([1,2,3])
print(tu1,type(tu1)) # (1,) <class 'tuple'>
print(tu2,type(tu2)) # alex <class 'str'>
print(tu3,type(tu3)) # [1, 2, 3] <class 'list'>
3.1 列表的相加
# 列表是可以相加的
l1 = [1,2,3]
l2 = [4,5,6,1,2,3]
l3 = l1 + l2
print(l3) # [1, 2, 3, 4, 5, 6]
注意:列表是可以相加的,但是不能相减
3.2列表的删除
注意:再循环一个列表时,如果对列表中的某些元素进行删除,那么次元素后面的所有元素就会向前进一位,他们的索引就会发生变化。
列表的三种删除方式:
例题 :删除索引为奇数位的元素,形成新的列表
# 方法一 :切片+步长
l1 = [11,22,33,44,55,66,77]
print(l1[::2]) # [11, 33, 55, 77]
# 方法二: 创建新列表
l1 = [11,22,33,44,55,66,77]
l2 = []
for i in l1:
if l1.index(i) % 2 == 0:
l2.append(i)
l1 = l2
print(l1)
# 方法三:倒序删除
l1 = [11,22,33,44,55,66,77]
for i in range(len(l1)-1,-1,-1): # 倒序循环
#print(i)
if i % 2 == 1:
l1.pop(i) # 按照索引去删除
print(l1)
4.1字典的三种创建方式
# (1)直接创建
dic1 = {'name':'alex','age':28,'sex':'M'}
# (2)fromkeys()创建
dic = dict.fromkeys([1,2,3],'alex')
print(dic) # {1: 'alex', 2: 'alex', 3: 'alex'} 值的内存地址指向同一个
# (3)通过 dict()创建
dic = dict({'name':'alex','age':28,'sex':'M'}) # 存在即合理
print(dic)
4.2 如何在循环时删除字典的值: 创建一个列表,再循环列表时删除字典的数据
dic1 = {'key1': 'alex1', 'key2': 'alex2', 'key3': 'alex3','name':'wusir'}
# 将dic的健中含有k的元素的所有键值对删除。
key = []
for k in dic1.keys():
key.append(k)
for i in key:
if "k" in i:
dic1.pop(i)
print(dic1)
注意:dictionary changed size during iteration : 再循环一个字典时,不能改变字典的大小
5、基础数据类型之间的转换
5.1int str bool 三者的转换
# int str bool 三者的转换
# str <---> bytes # encode() decode()
# str <---> list
s1 = 'alex wusir taibai'
l1 = s1.split()
print(l1) # ['alex', 'wusir', 'taibai']
# list <---> str
l1 = ['alex', 'wusir', 'taibai']
s2 = ' '.join(l1)
print(s2) # 'alex wusir taibai'
5.2元组 <---> list
# 元组 <---> list
tu2 = (0,2,3)
l1 = list(tu2)
print(l1) # [0, 2, 3]
5.3字典<--->list
# 字典<--->list
dic1 = {'key1': 'alex1', 'key2': 'alex2', 'key3': 'alex3','name':'wusir'}
l1 = list(dic1) # 可以将字典的key取出来,形成列表
print(l1) # ['key1', 'key2', 'key3', 'name']
# 其他形式的转化 :keys() values() items()
6、集合
set1 = {'alex',[1,2],1,2,3} # unhashable type: 'list'
set2 = {'alex','wusir'}
set3 = set({'alex','wusir','alex'}) # set转化为集合,集合有去重的特性
print(set3)
6.1关系测试
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8,9}
交集
print(set1 & set2)
print(set1.intersection(set2)) # 并集
print(set1 | set2)
print(set1.union(set2)) # 反交集
print(set1 ^ set2)
print(set1.symmetric_difference(set2)) # 差集
print(set1- set2)
print(set1.difference(set2)) # 子集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
print(set1 < set2)
print(set1.issubset(set2)) # 超集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
print(set2 > set1)
print(set2.issuperset(set1))
6.2 集合转换元组
set1 = {1,2,3}
set3 = frozenset(set1) # 转换成元组 ***
print(set3) # frozenset({1, 2, 3})
7.1赋值运算
1 = [1,2,3]
l2 = l1
l1.append(666)
print(l2)
print(id(l1))
print(id(l2)) # 指向同一个内存地址
8、深浅copy
# (1) 浅copy
l1 = [1,2,3,[22,]]
l2 = l1.copy()
# l1.append('alex')
# print(l1,l2)
# print(id(l1),id(l2)) # 指向不同一个内存地址
l1[-1].append('taibia ')
print(l1,l2)
print(id(l1)) # 内存地址不相同
print(id(l2))
print(id(l1[-1])) # 内存地址相同
print(id(l2[-1]))
# (1)深copy
import copy
l1 = [1,2,3,[22,]]
l2 = copy.deepcopy(l1)
# print(l1,l2)
# l1.append(666)
l1[-1].append('太白')
print(l2)
Python基础学习Day7 基础数据类型的扩展 集合 深浅copy的更多相关文章
- python 的基础 学习 第八天数据类型的补充 ,集合和深浅copy
1,数据类型的补充: 元组()tuple,如果只有元素,并且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型. tu = ('rwr') print(tu,type(tu)) tu = ('r ...
- python之路--基础数据类型的补充与深浅copy
一 . join的用法 lst =['吴彦祖','谢霆锋','刘德华'] s = '_'.join(lst) print(s) # 吴彦祖_谢霆锋_刘德华 # join() "*" ...
- python之路(集合,深浅copy,基础数据补充)
一.集合:类似列表,元组的存储数据容器,不同点是不可修改,不可重复.无序排列. 1.创建集合: (1).set1 = {'abby', 'eric'} result:{'eric', 'abby'} ...
- python基础之 编码进阶,文件操作和深浅copy
1.编码的进阶 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码.即先将其他编码的字符串解码(decode)成unicode,再从unic ...
- python基础3(元祖、字典、深浅copy、集合、文件处理)
本次内容: 元祖 字典 浅copy和深copy 集合 文件处理 1.1元祖 元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要 ...
- 基础数据类型的补充和深浅copy
一:关于str 的操作方法补充 1,s.isspace() 判断字符串是否只由空格组成,是,为True,否则,为False. s = ' ' #只能是以至少一个空格组成的字符串(全空格) prin ...
- Python中的代码块及其缓存机制、深浅copy
一.代码块及其缓存机制 代码块 一个模块.一个函数.一个类.一个文件等都是一个代码块:交互式命令下,一行就是一个代码块. 同一个代码块内的缓存机制(字符串驻留机制) 机制内容:Python在执行同一个 ...
- python--基础数据类型的补充与深浅copy
一 . join的用法 lst =['吴彦祖','谢霆锋','刘德华'] s = '_'.join(lst) print(s) # 吴彦祖_谢霆锋_刘德华 # join() "*" ...
- python基础学习day7
基础数据类型的补充:编码的进阶 str capitalize() 首字母(第一个单词)大写,其余变小写 s1 = 'I LIVE YOU' print(s1.capitalize()) >> ...
随机推荐
- Linux性能优化 第八章 实用工具:性能工具助手
8.1性能工具助手 Linux有丰富的工具,这些工具组合来使用会更加强大.性能工具也一样,单独使用虽然也没有问题,但是和其他的工具组合起来就能显著提高有效性和易用性. 8.1.1 自动执行和记录命令 ...
- SQL Server 查询性能优化——创建索引原则(一)
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引 ...
- elastalert新增自定义警告推送
举例,博主公司有自己的内部通讯工具(类似QQ),接下来用IM代称该工具.于是希望elastalert的警告推送可以支持IM的公众号群发功能. 等博主这个月知识库写了再来补充hah
- web app 、native app、hybrid app比较
web app .native app.hybrid app比较 产品新人学习路 关注 2017.06.04 14:52* 字数 1887 阅读 11476评论 1喜欢 15 之前做讨论的时候,提出了 ...
- Java多线程例子
package rom; import java.awt.image.AreaAveragingScaleFilter; public class Xamle_2 { private static T ...
- 虚拟机中安装CentOS7
初始安装: 1.安装新虚拟机时,选择稍后安装操作系统,这可以自己设置语言等信息 2.修改自定义硬件:为网卡生成一个mac地址,(这里需要注意,有时网卡会冲突,导致连接时好时坏,以后可以删除掉网卡,重新 ...
- CPU Usage Sampling Profiles (cpu=samples)
HPROF工具通过对采样线程搜集CPU使用信息.以下是从运行的javac中样例输出的一部分. $ javac -J-agentlib:hprof=cpu=samples Hello.java CPU ...
- [多线程]多线程(Thread、Runnable、Callable)
1.继承Thread类,重写run方法 线程 是程序中的执行线程.Java 虚拟机允许应用程序并发地运行多个执行线程. 每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程.每个线程都可以或不 ...
- Mybatis学习4——一对一关联查询方法2------实体作为属性
实体order和user采用resultMap order package pojo; import java.util.Date; public class Order { private Inte ...
- python selenium 三种等待方式详解[转]
python selenium 三种等待方式详解 引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...