str知识点补充:

#join() 将列表中的每个元素中间加上一个字符,连接成一个字符串
list = ['a','b','c','d']
str = '*'.join(list)
print(str)  # a*b*c*d# 将列表 -> 字符串 用join()   将字符串 -> 列表,用split() 切割

关于列表或字典循环删除的问题:

列表:

#循环删除列表中的元素,以达到清空列表的结果
#错误写法
lis = [1,2,3,4]
"""
for i in lis:print(lis.index(i)) # 0 1 lis.remove(i) # [2,4]
print(lis)
#删除不干净的原因:每次删除一个元素,后面的元素总会向前进一个位置,到最后会找不到一部分索引
"""
#way 1 :(可以达到目的,但不是很好)
for i in range(0,len(lis)):lis.remove(lis[0]) #每次只删除最开始的元素
print(lis)#删除列表完美写法
new_lis = []
#先将要删除的东西放入到新列表中
for i in lis:new_lis.append(i)
#利用新列表作为目标,去删除老列表中的东西
for el in new_lis:lis.remove(el)

View Code

  原因:for 的运行过程中,会有一个指针来记录当前循环的元素是哪一个,一开始这个指针指向第0个,然后获取到第0个元素,紧接着删除第0个,这个时候,原来是第一个的元素就会自动编程第0个,然后指针向后移动一次,指向1元素,这时原来的1已经变成了0,也就不会被删除了。

字典:

#关于将字典清空
dic = {'a':1,'b':2,'c':3}
#错误写法
# for i in dic: #这儿直接写dic 相当于dic.key()
#     dic.pop(i)  # dictionary changed size during iteration 在遍历字典的时候不允许修改#正确的写法
#先将你要删除的key存储到List中
li = []
for i in dic:li.append(i)
#再根据li中的元素,删除字典中的键值对
for i in li:dic.pop(i)
print(dic) # {}

View Code

由于删除元素会导致元素的索引改变,所以容易出现问题,尽量不要在循环中直接去删除元素,可以把要删除的元素添加到另一个集合中然后再批量删除。

#dict的fromkey() 通过list 创建一个dict
#将前一项的元素迭代与第二项的元素形成键值对
#前面的每一项都会作为key,后面的列表中的内容作为value,形成字典
dic = {}
# dic.fromkeys(['123','234'],"你好")
# print(dic) #{} 没有接收返回值
dic = dic.fromkeys(['123','234'],["你好"]) #返回字典类型,需要赋值给dic
print(dic) # {'123': ['你好'], '234': ['你好']}#两个key指向的是同一个value 一个变则都变
dic['123'].append('世界')
print(dic['234']) # ['你好', '世界']

View Code

类型转换:

  • 元组 -> 列表  list(tuple)
  • 列表 -> 元组  tuple(list)
  • list -> str  str.join(list)
  • str -> list  str.split()

转换成False的数据:

  0,‘’,None,[],{},set(),(), False

set集合

set集合是python中的一个基本数据类型,一般不是很常用,set中的元素是不重复的,无序的,里面的元素必须是可哈希的,即不可变的(int,str,tuple,bool)

set就是dict类型的数据,但是不保存value,只保存key,用{}表示

#set 本身不可哈希(可以修改) 但是其中元素是可哈希的  元素不可重复  元素无序  存储的相当于字典中的key#创建一个set
se_1 = set({1,2,3,[1,2]}) # wrong: unhashable type: 'list'
print(se_1)
se_1 = {1,2,3}
se_2 = set({3,4,5})
print(se_1,se_2)#因为set不可以重复,所以它可以给list去重
lis = ['周杰伦','周星驰','周润发','周星驰']
se_3 = set(lis) #将list转换为set
lis = list(se_3) #将set转换为list
print(lis) # ['周杰伦', '周星驰', '周润发']#set的操作:
# ---------- 增 ------------- add update
se = set({}) # 如果单写{},会被认为是字典
for i in range(0,5):se.add(i) #增
print(se) # {0, 1, 2, 3, 4}
se.add(4) #重复的数据无用
print(se)se.update(['q','w','e'])  #迭代着更新
print(se)# {0, 1, 2, 3, 4, 'w', 'q', 'e'}# ---------- 删 -------------
ret = se.pop() #随便删除一个元素  返回删除的那个元素
se.remove(1) #删除指定元素
se.clear() #清空 结果是set() 因为要和字典区别# ---------- 改 -------------
# 因为set是无序的,所以不能通过索引删除元素
#先删除再添加
se.remove(1)
se.add('添加的元素')# ---------- 查 -------------
#set可迭代 可以用for循环进行遍历
for i in se:print(i)se_1 = {1,2,3,4}
se_2 = {4,5,6,7}# ---------- 其他操作 -------------
#交集
print(se_1 & se_2) #{4}
print(se_1.intersection(se_2))#并集
print(se_1|se_2) # {1, 2, 3, 4, 5, 6, 7}
print(se_1.union(se_2))#差集
print(se_1 - se_2) #{1,2,3}
print(se_1.difference(se_2))#反交集
print(se_1 ^ se_2) # {1, 2, 3, 5, 6, 7}
print(se_1.symmetric_difference(se_2))#子集
# print(se_1 < se_2) # False
# print(se_1.issubset(se_2))#超集
print(se_1 > se_2)
print(se_1.issuperset()) #False#set集合本身是可以发生改变的,是不可哈希的,我们可以使用frozenset来保存数据。
# frozenset是不可变的,可就是一个可哈希的数据类型
s = frozenset(['q','w','e'])
dic = {s:'123'} #可以正常使用了
print(dic) 

View Code

转载于:https://www.cnblogs.com/liangying666/p/9150891.html

set集合以及知识点补充相关推荐

  1. 计算机网络知识点补充

    计算机网络知识点补充 目录: 1. HTTP和HTTPS的区别 http协议是运行在tcp之上,明文传输,客户端和服务器端都无法验证对方的身份:https是运行在ssl(Secure Socket L ...

  2. Jaeger知识点补充

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos <Jaeger实战(Java版)>系列全文 ...

  3. 云日记_登出操作个人中心页面js和jsp知识点补充

    用户退出     前端:         设置超链接的请求地址  user?actionName=logout     后台:         1. 销毁Session对象         2. 删除 ...

  4. set集合、深浅拷贝以及部分知识点补充

    基础数据类型补充 字符串的拼接 lis = ["李嘉诚", "麻花藤", "黄海峰", "刘嘉玲"]s = " ...

  5. Java中Map接口的使用和有关集合的面试知识点补充

    ✅作者简介:C/C++领域新星创作者,努力修炼后端中 ✨个人主页:叶落秋白的主页

  6. 043_集合重要知识点

    一. 集合图解 二. 三个重要的知识点 1. 迭代器 1.1. Iterator迭代器 java.util.Iterator接口 hashNext()方法 next()方法 remove()方法 1. ...

  7. Python-day06-2018.7.9_编码以及小知识点补充

    本节知识点: 1.is 和 == 的区别 2.编码的问题 一.is 和 == 的区别 1.id()  通过id我们可以查看到一个变量表示的值在内存中的地址. s = 'alex' print(id(s ...

  8. Java工具类、异常和集合(温习知识点)

    今日内容 * 工具类* API* Object类* String类* StringBuffer类* StringBuilder类* Math类* Array类* System类* 包装类* BigIn ...

  9. 基于python的openCV自学笔记(四)——遗漏知识点补充

    本篇补充暑假学opencv遗漏的相关知识点 参考链接:https://www.bilibili.com/video/BV1Fo4y1d7JL?from=search&seid=17628666 ...

最新文章

  1. 《VMware vSphere企业运维实战》——2.6 使用vCenter Converter迁移物理机到虚拟机
  2. 安卓案例:绑定和解绑服务
  3. RAN adjusts schedule for 2nd wave of 5G specifications
  4. 实例分割——转置卷积的学习笔记
  5. mysql将一个表的字段更新到另一个表中
  6. qdtuling.xyz 7.10
  7. navicat的注册码
  8. Spring Cloud Eureka 全解 (5) - 自我保护机制
  9. 痞子衡嵌入式:开启NXP-MCUBootUtility工具的HAB签名功能 - CST(中英双语)
  10. Had I not seen the Sun(如果我不曾见过太阳)
  11. CSS3 实现3D特效
  12. 如何两个电脑共享文件实现多人编辑_电脑网络:一分钟了解共享文件,多用户共同编辑,效率提高百倍-两台电脑怎么连接局域网...
  13. OpenWRT学习笔记(1)环境部署代码下载及编译
  14. SSLOJ 1317.灵魂分流药剂
  15. 最快的排序方法-----快速排序
  16. 抖音短视频矩阵系统/源码/系统搭建
  17. echarts 地图 加涟漪 加路线 加移入
  18. 基于springboot垃圾分类网站
  19. 推荐一些有趣实用的前端可视化工具库,助力可视化开发
  20. AFL查看crash文件

热门文章

  1. 微信wx.request
  2. Visual Studio 2015 单元测试(c++初试)
  3. 清除float的方法
  4. hadoop conf中xml文件修改
  5. 【折腾的一个小玩意】基于jquery+百度音乐的音乐外链小工具
  6. 毕业生该不该做软件开发这一行?
  7. 华为收购港湾核心业务 6年恩怨尘埃落定
  8. MySQL 服务挂了 CPU 消耗接近 100% 你知道怎么回事吗???
  9. Mybatis中查询结果resultMap使用分析
  10. JS进阶 你真的掌握变量和类型了吗?