博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 13day--集合、字符串格式化
阅读量:6818 次
发布时间:2019-06-26

本文共 3323 字,大约阅读时间需要 11 分钟。

一、set是一个无序且不重复的元素集合

1、集合需要掌握的知识点:

1 #作用:去重,关系运算, 2  3 #定义: 4             知识点回顾 5             可变类型是不可hash类型 6             不可变类型是可hash类型 7  8 #定义集合: 9             集合:可以包含多个元素,用逗号分割,10             集合的元素遵循三个原则:11              1:每个元素必须是不可变类型(可hash,可作为字典的key)12              2:没有重复的元素13              3:无序14 15 注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值16  17 18 #优先掌握的操作:19 #1、长度len20 #2、成员运算in和not in21 22 #3、|合集23 #4、&交集24 #5、-差集25 #6、^对称差集26 #7、==27 #8、父集:>,>= #9、子集:<,<=

2、集合的关系运算

  一.关系运算  有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合  pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}  linuxs={'wupeiqi','oldboy','gangdan'}  1. 求出即报名python又报名linux课程的学员名字集合  2. 求出所有报名的学生名字集合  3. 求出只报名python课程的学员名字  4. 求出没有同时这两门课程的学员名字集合

  

1 # 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合 2 pythons={
'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'} 3 linuxs={
'wupeiqi','oldboy','gangdan'} 4 # 求出即报名python又报名linux课程的学员名字集合 5 print(pythons & linuxs) 6 # 求出所有报名的学生名字集合 7 print(pythons | linuxs) 8 # 求出只报名python课程的学员名字 9 print(pythons - linuxs)10 # 求出没有同时这两门课程的学员名字集合11 print(pythons ^ linuxs)

3、集合的应用举例:

二.去重   1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序   2.在上题的基础上,保存列表原来的顺序   3.去除文件中重复的行,肯定要保持文件内容的顺序不变   4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序l=[    {
'name':'egon','age':18,'sex':'male'}, {
'name':'alex','age':73,'sex':'male'}, {
'name':'egon','age':20,'sex':'female'}, {
'name':'egon','age':18,'sex':'male'}, {
'name':'egon','age':18,'sex':'male'},]
1 #去重,无需保持原来的顺序 2 l=['a','b',1,'a','a'] 3 print(set(l)) 4  5 #去重,并保持原来的顺序 6 #方法一:不用集合 7 l=[1,'a','b',1,'a'] 8  9 l1=[]10 for i in l:11     if i not in l1:12         l1.append(i)13 print(l1)14 #方法二:借助集合15 l1=[]16 s=set()17 for i in l:18     if i not in s:19         s.add(i)20         l1.append(i)21 22 print(l1)23 24 25 #同上方法二,去除文件中重复的行26 import os27 with open('db.txt','r',encoding='utf-8') as read_f,\28         open('.db.txt.swap','w',encoding='utf-8') as write_f:29     s=set()30     for line in read_f:31         if line not in s:32             s.add(line)33             write_f.write(line)34 os.remove('db.txt')35 os.rename('.db.txt.swap','db.txt')36 37 #列表中元素为可变类型时,去重,并且保持原来顺序38 l=[39     {
'name':'egon','age':18,'sex':'male'},40 {
'name':'alex','age':73,'sex':'male'},41 {
'name':'egon','age':20,'sex':'female'},42 {
'name':'egon','age':18,'sex':'male'},43 {
'name':'egon','age':18,'sex':'male'},44 ]45 # print(set(l)) #报错:unhashable type: 'dict'46 s=set()47 l1=[]48 for item in l:49 val=(item['name'],item['age'],item['sex'])50 if val not in s:51 s.add(val)52 l1.append(item)53 54 print(l1)55 56 57 58 59 60 61 #定义函数,既可以针对可以hash类型又可以针对不可hash类型62 def func(items,key=None):63 s=set()64 for item in items:65 val=item if key is None else key(item)66 if val not in s:67 s.add(val)68 yield item69 70 print(list(func(l,key=lambda dic:(dic['name'],dic['age'],dic['sex']))))

 

二、字符串格式

1、c语言式的格式化方法之占位符

str1 ='sb'str2 ='big'print('alex is a %s %s'%(str2,str1))

2、利用format格式化

1 dic = {
'a1':'big','a2':'sb'}2 print('alex is a {0} {1}'.format(str2,str1))3 print('alex is a {a1} {a2}'.format(a1= "big",a2='sb'))

 

转载于:https://www.cnblogs.com/yuzhiboyou/p/10135254.html

你可能感兴趣的文章
简单的安卓应用授权认证(JNI)
查看>>
查看硬盘读取速率
查看>>
把匹配的小写转换成大写(\U、\u)
查看>>
【算法】最短路径之A*搜索
查看>>
【Android网络开发の5】Android中的网络数据下载
查看>>
linux终端使用python的matplotlib模块画图出现“could not open display”问题解决
查看>>
9月国内浏览器市场份额大战:IE份额上升至48.45%
查看>>
Tapestry 教程(五)实现Hi-Lo猜谜游戏
查看>>
2015年12月国内网民地域分布12强:湖北跻身上榜
查看>>
mysql-5.6安装
查看>>
LNMP环境搭建 Ubuntu篇
查看>>
设置低版本VDA注册高版本DDC
查看>>
multi-process script for ping host
查看>>
云数据库SQL Server 2008 R2版推出OSS版本数据上云
查看>>
Android 侵权案下周复审
查看>>
shell基础知识;
查看>>
RocketMQ源码分析之RocketMQ事务消息实现原理中篇----事务消息状态回查
查看>>
SQL使用中的优化
查看>>
2014年下半年信息系统项目管理师上午试题试题与答案 43
查看>>
centos版本查询
查看>>