12.22
1、昨日内容回顾

小数据池:
int:-5--256
str:1.不能有特殊字符
2.*int不能超过20
编码:所能看到的最小构成单位叫字符
ascii : 8位 1字节 表示1个字符
unicode 32位 4个字节 表示一个字符
utf- 8 1个英文 8位,1个字节
欧洲 16位 两个字节 表示一个字符
亚洲 24位 三个字节 表示一个字符 gbk 1个英文 8位,1个字节
亚洲 16位 两个字节 表示一个字符
bytes:
s = 'alex'
b = s.encode('utf-8')
print(b) # b'alex'

2、今日内容讲解
1.基础数据类型汇总补充

str

int

list
   在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错。
bool

dict
   1,fromkeys()

tuple元祖

     如果元祖里面只有一个元素且不加,那此元素是什么类型,就是什么类型。

2、集合
    可变的数据类型,他里边的元素必须是不可变的数据类型,无序,不重复

(1)创建集合

set1 = set({1,2,3,})
print(set1)

(2)增删查

set1 = {'alex','wusir','ritian','egon','barry'}
set1.add("jing")
set1.update("kkkk")
print(set1)
set1.pop()
set1.remove("alex")
set1.clear()
del set1
for i in set1:
print(i)

(3)集合的操作

交集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2)
print(set1.intersection(set2))
并集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1|set2)
print(set1.union(set2))
差集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2)
print(set1.difference(set2))
反交集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2) # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))
子集与超集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6} print(set1 < set2)
print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。
去重
li = [1,2,33,33,2,1,4,5,6,6]
set1 = set(li)
print(set1)
li = list(set1)
print(li)
s1 = {1,2,3}
print(s1,type(s1))

3、深浅copy

赋值运算
l1 = [1,2,3,['barry','alex']]
l2 = l1 l1[0] = 111
print(l1) # [111, 2, 3, ['barry', 'alex']]
print(l2) # [111, 2, 3, ['barry', 'alex']] l1[3][0] = 'wusir'
print(l1) # [111, 2, 3, ['wusir', 'alex']]
print(l2) # [111, 2, 3, ['wusir', 'alex']]
对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。    

浅copy
l1 = [1,2,3,['barry','alex']]
l2 = l1.copy()
print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2380296895816
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2380296895048
l1[1] = 222print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2593038941128print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2593038941896
l1[3][0] = 'wusir'
print(l1,id(l1[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016
print(l2,id(l2[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016
对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
深copy
import copy
l1 = [1,2,3,['barry','alex']]
l2 = copy.deepcopy(l1) print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2915377167816
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048 l1[1] = 222
print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2915377167816
print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048 l1[3][0] = 'wusir'
print(l1,id(l1[3])) # [1, 222, 3, ['wusir', 'alex']] 2915377167240
print(l2,id(l2[3])) # [1, 2, 3, ['barry', 'alex']] 2915377167304
对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变    

4、补充

枚举:enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
li = ['alex','银角','女神','egon','太白']
for i in enumerate(li):
print(i)
for index,name in enumerate(li,1):
print(index,name)
for index, name in enumerate(li, 100): # 起始位置默认是0,可更改
print(index, name)   
删除索引为奇数位的元素
lis = [11,22,33,44,55]
#第一种
lis = [11,22,33,44,55]
lis = lis[::2]
print(lis)
#第二种
lis = [11,22,33,44,55]
l1 = []
for i in lis:
if lis.index(i) % 2 == 0:
l1.append(i)
lis = l1
print(lis)

#第三种
lis = [11,22,33,44,55]
for i in range(len(lis)-1,-1,-1):
if i % 2 == 1:
print(i)
del lis[i]
print(lis)
print(lis)

最新文章

  1. oracle索引监控
  2. centos6.4下安装php7+nginx+mariadb环境
  3. svn import-纳入版本控制
  4. Java多线程编程核心技术--定时器
  5. 深入理解Java虚拟机 - 垃圾收集概述
  6. [开心IT面试题] realloc用法
  7. Java 接口-抽象类解析
  8. MySQL binlog 的恢复操作
  9. dump文件解析之探索.Net的内存
  10. 服务器与本地的控制工具unison
  11. 【UOJ#340】【清华集训2017】小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划)
  12. uoj#80 二分图最大权匹配
  13. 042、用volume container 共享数据 (2019-03-05 周二)
  14. MGR 架构 ~ DBA相关运维管理
  15. 在Ubuntu下解决 adb devices :???????????? no permissions 方法
  16. Automation Script For Percona Xtrabackup FULL/Incremental
  17. CPP2-基础部分(1)
  18. GPUImage API文档之GPUImageFramebuffer类
  19. iview的Affix插件遇到滚动时候的bug处理方法
  20. SqlServer收缩日志文件

热门文章

  1. Oracle创建测试表
  2. jQuery 常见开发使用技巧总结
  3. ios-Objective-C中的各种遍历(迭代)方式(转载)
  4. Spark-Cache与Checkpoint
  5. 滑雪---poj1088(动态规划+记忆化搜索)
  6. 通过PyPI镜像安装Python包
  7. mongodb基础语法
  8. getParameter和getAttribute区别
  9. 怎样在 Ubuntu 上使用 ZFS 文件系统 | Linux 中国
  10. Kubernetes 1.8火热出炉:稳定性、安全性与存储支持能力全面提升