一、数据类型补充

1.str:.isspace()字符串是空格或至少是一个空格。

s='alex'
s1=' '
ret=s1.isspace()
print(ret)

执行结果:True

 2.tul: 对于元组如果只有一个元素,并且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型。

tu=(1)
tu1=(1,)
print(tu,type(tu))
print(tu1,type(tu1)) 执行结果:
1 <class 'int'>
(1,) <class 'tuple'>

 3.list:在循环一个列表示,最好不要进行删除的动作,一旦删除索引会随之变化,容易出错(如果一定要删除可以倒着删)。

例:将索引为奇数的元素删除

#方法1通过循环查找索引为偶数的元素添加到新的list
li = ['老男孩', 'python', 'alex', 'wusir', 'egon', 'ritian', '女神']
l1=[]
for i in range(len(li)):
if i % 2==0:
l1.append(li[i])
li=l1
print(li) 执行结果:['老男孩', 'alex', 'egon', '女神']
#方法2直接切片删除
li = ['老男孩', 'python', 'alex', 'wusir', 'egon', 'ritian', '女神']
del li[1::2]
print(li) 执行结果:['老男孩', 'alex', 'egon', '女神']
#方法3通过循环倒着删除
li = ['老男孩', 'python', 'alex', 'wusir', 'egon', 'ritian', '女神']
for i in range(len(li)-1,-1,-1):
if i % 2==1:
del li[i]
print(li) 执行结果:['老男孩', 'alex', 'egon', '女神']

  4.dict : dict.fromkeys('可迭代对象',‘值’)

dic=dict.fromkeys('abc','alex')
print(dic) 执行结果:
{'a': 'alex', 'b': 'alex', 'c': 'alex'}
dic=dict.fromkeys([1,2,3],[])
print(dic)
dic[1].append('老男孩')
print(dic) 执行结果:
{1: [], 2: [], 3: []}
{1: ['老男孩'], 2: ['老男孩'], 3: ['老男孩']}

在循环字典时不能改变字典的大小,不能增加或删除此字典的键值对。

例:将字典中含有k元素的键对应的键值对删除

dic = {'k1':'value1','k2':'value2','name':'wusir'}
for i in dic:
if 'k' in i:
del dic[i] 执行结果:报错
l1=[]    #添加到一个列表中进行删除
for i in dic:
if 'k' in i:
l1.append(i)
for i in l1:
del dic[i]
print(dic) 执行结果:
{'name': 'wusir'}

5.数据类型转换

  tuple---->list    list(tu)

tu=(1,2,3)
li=list(tu)
print(li) 执行结果:
[1, 2, 3]

list---->tuple  tuple(li)

l1=[1,2,3]
tul=tuple(l1)
print(tul) 执行结果:
(1, 2, 3)

#0、''、[]、()、{} 空字符串、列表、元组、字典转化为bool都为False

二、set集合

集合是不重复的、无序的,它里面的元素是可哈希的,它本身是不和哈希的,不能作为字典的key。

  集合的作用:

  1.去重

    把一个列表变成集合就自动去重了

li=[11,11,22,22,33,33,33,44]
li=list(set(li))
print(li) 执行结果:
[33, 11, 44, 22]

  2.数据关系测试,测试两组数据之前的交集、差集、并集等关系。

    1)集合的增:

 1. set.add('   ') 

set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('女神')
print(set1) 执行结果:
{'alex', 'ritian', 'barry', '女神', 'egon', 'wusir'}

 2.set.update([1,2,3]) 迭代增加

set1 = {'alex','wusir','ritian','egon','barry'}
set1.update([1,2,3])
print(set1) 执行结果:
{1, 2, 3, 'wusir', 'barry', 'alex', 'egon', 'ritian'}

  2)集合的删

   1.Set.remove(‘元素’)

set1 = {'alex','wusir','ritian','egon','barry'}
set1.remove('alex')
print(set1) 执行结果:
{'wusir', 'egon', 'barry', 'ritian'}

2.set.pop()随机删除

3.set.clear()   set()空集合

4.del set   删除集合

 3)集合的查

     for循环查

set1 = {'alex','wusir','ritian','egon','barry'}
for i in set1:
print(i) 执行结果:
ritian
wusir
barry
egon
alex

4)集合的其他操作

1.交集 &和set.intersection()

set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1 & set2)
print(set1.intersection(set2)) 执行结果:
{4, 5}
{4, 5}

2.反交集 ^和set.symmetric_difference()

set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1 ^ set2)
print(set1.symmetric_difference(set2)) 执行结果:
{1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}

3.并集 |和set.union()

set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1 | set2)
print(set1.union(set2)) 执行结果:
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}

4.差集 set1-set2

set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1-set2) 执行结果:
{1, 2, 3}

5.子集  set.issubset()

set1={1,2,3}
set2={1,2,3,4,5,6}
print(set1.issubset(set2)) 执行结果:
True

6.超集  set.issuperset()

set1={1,2,3}
set2={1,2,3,4,5,6}
print(set2.issuperset(set2)) 执行结果:
True

三、深浅copy

1.赋值运算:对于赋值运算指向的是同一内存地址,dict、list、set都是一样的。

l1=[1,2,3]
l2=l1
l2.append(111)
print(l1,l2) 执行结果:
[1, 2, 3, 111] [1, 2, 3, 111]

2.浅copy:不是指向一个,而是又开辟了一个存储空间,对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以对于第二层以及更深的层数来说,保持一致性。

l1=[1,2,3]
l2=l1.copy()
l1.append(111)
print(l1,l2) 执行结果:
[1, 2, 3, 111] [1, 2, 3]
l1=[1,2,3,['guo','li']]
l2=l1.copy()
print(l1,id(l1))
print(l2,id(l2)) 执行结果:
[1, 2, 3, ['guo', 'li']] 427213865032
[1, 2, 3, ['guo', 'li']] 427213868744
l1=[1,2,3,['guo','li']]
l2=l1.copy()
l1[3][0]='wu'
print(l1,id(l1[3])) #[1, 2, 3, ['wu', 'li']] 769433489352
print(l2,id(l2[3])) #[1, 2, 3, ['wu', 'li']] 769433489352

3.深copy deep.copy:对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

import copy
l1=[1,2,[1,2,3],4]
l2=copy.deepcopy(l1)
l1[2].append(666)
print(l1,id(l1[2])) #[1, 2, [1, 2, 3, 666], 4] 893847315656
print(l2,id(l2[2])) #[1, 2, [1, 2, 3], 4] 893847281352

4.切片浅copy

l1=[1,2,3,[22,33]]
l2=l1[:]
l1[3].append(666)
print(l2) #[1, 2, 3, [22, 33, 666]]

最新文章

  1. AAU
  2. HttpContext.Cache属性
  3. 笔记:js的replace函数
  4. Servlet的生命周期及filter,servletRequest和servletResponse
  5. Good vs Evil
  6. centos挂载移动硬盘
  7. Secant Method (Website)
  8. Qt Creator编译时:cannot open file &#39;debug\QtGuiEx.exe&#39; File not found
  9. opencv 边缘羽化,边缘过渡
  10. jquery 事件注册 与重复事件处理
  11. 1592: [Usaco2008 Feb]Making the Grade 路面修整
  12. 翻译--Thinking in React
  13. MYSQL主从同步/主主同步
  14. 向redis中添加删除list列表
  15. GBDT(MART) 迭代决策树详解
  16. jdbctemplate 获取数据表结构的方法&amp;注意事项
  17. SQL Server 2008设置sa用户并开启远程连接
  18. Convolution Neural Network (CNN) 原理与实现
  19. 包学会之浅入浅出 Vue.js:开学篇
  20. 【FusionCharts学习-2】第一个FusionCharts程序

热门文章

  1. Hive与MapReduce相关排序及自定义UDF函数
  2. SGU140. Integer Sequences
  3. Flowable实战(五)表单和流程变量
  4. Flowable实战(六)集成JPA
  5. 理解ASP.NET Core - 基于Cookie的身份认证(Authentication)
  6. 中招了,重写TreeMap的比较器引发的问题…
  7. zabbix_proxy3.4安装
  8. SaltStack 的基本概念与工作原理 架构设计
  9. python16day
  10. IO多路复用原理&amp;场景