数据类型和变量的总结

字符串

数字

列表

元组

字典

分类

1、可变不可变:

可变(即修改变量值以后id不改变):列表、字典

不可变(即修改变量值以后id改变):字符串、数字、元组

2、访问顺序:

直接访问:数字

顺序访问:字符串、列表、元组

映射访问:字典

3、存放元素个数:

容器类型:列表、元组、字典

原子类型:数字、字符串

集合

定义:由不同元素组成的集合,集合中是一组无序排列的可hash值(元素必须都是不可变类型:字符串、数字、元组),可以作为字典的key

特点:集合的目的是将不同值存放在一起,不同的集合间用","分开

 s = {1,3,5,2,6,5}
print(s)
#{1, 2, 3, 5, 6}
for i in s:
print(i)
"""
1
2
3
5
6
"""
s1 = set("alexx")
print(s1)
#{'l', 'a', 'x', 'e'}

注意set()定义的使用方式:

 s2 = set(["alex","alex","sb"])
#s2 = set("alex","alex","sb")=>Wrong
print(s2)
#{'alex', 'sb'}

注意:另一种定义方式可以将集合定义为不可变类型

 s = frozenset("hello")
print(s)
#frozenset({'e', 'o', 'l', 'h'})

集合的运算关系

.intersection()    &

求交集

 1 English = ["Lily", "Sally", "Tom", "Paul"]
2 Math = ["Lily", "Sally", "John"]
3 English_s = set(English)
4 Math_s = set(Math)
5 print(English_s, Math_s)
6 print(English_s.intersection(Math_s))
7 """
8 {'Sally', 'Paul', 'Lily', 'Tom'} {'Sally', 'Lily', 'John'}
9 {'Sally', 'Lily'}
10 """

.union()      |

求并集

1 English = ["Lily", "Sally", "Tom", "Paul"]
2 Math = ["Lily", "Sally", "John"]
3 English_s = set(English)
4 Math_s = set(Math)
5 print(English_s|Math_s)
6 """
7 {'Sally', 'Paul', 'John', 'Tom', 'Lily'}
8 """

.difference()    -

求差集

1 Math = ["Lily", "Sally", "John"]
2 English_s = set(English)
3 Math_s = set(Math)
4 print(English_s-Math_s)
5 print(Math_s-English_s)
6 """
7 {'Paul', 'Tom'}
8 {'John'}
9 """

.symmetric_difference()   ^

求交叉补集(就是把各个集合独有的元素都取出来)

 English = ["Lily", "Sally", "Tom", "Paul"]
Math = ["Lily", "Sally", "John"]
English_s = set(English)
Math_s = set(Math)
print(English_s.symmetric_difference(Math_s))
"""
{'John', 'Tom', 'Paul'}
"""

集合的类中功能

.add()

  添加元素

.clear()

  清空

.copy()

  拷贝

.pop() .remove(x) .discard(x)

  第一个任意删除,第二个删除指定的x,若不存在则报错,第三个删除不存在元素不报错

 s = {1,3,5,2,6,5,"sad"}
s.pop()
print(s)
#{2, 3, 5, 6, 'sad'}
s.remove(5)
print(s)
#{2, 3, 6, 'sad'}
s.discard("sadddd")
print(s)

.difference_update()

求完差集后更新

 English = ["Lily", "Sally", "Tom", "Paul"]
Math = ["Lily", "Sally", "John"]
English_s = set(English)
Math_s = set(Math)
English_s.difference_update(Math_s)
print(English_s)
#{'Paul', 'Tom'}

.isdisjoint()

判断两个集合是否没有交集,没有则返回True,有则返回False

 s1 = {1,2,3}
s2 = {2,3,4}
print(s1.isdisjoint(s2))
#False

s1.issubset(s2)

判断s1是否是s2的子集

 s1 = {1,2,3}
s2 = {2,3}
print(s2.issubset(s1))
#True

s1.issuperset(s2)

判断s1是否是s2的父集

 s1 = {1,2,3}
s2 = {2,3}
print(s1.issuperset(s2))
#True

s1.update(s2)

将s1更新为s2

 s1 = {1,2,3}
s2 = {2,3}
s1.update(s2)
print(s1)
#{1, 2, 3}

.add()

与update区别在于该功能只能添加一个值,而update不限

 s1 = {1,2,3}
s1.add(5)
print(s1)
#{1, 2, 3, 5}
 s1 = {1,2,3}
s1.update({5,6})
print(s1)
#{1, 2, 3, 5, 6}

字符串格式化

%s

 msg = "I am %s and I like eating"%"Jenny"  #%是固定格式,s代表是字符串形式
print(msg)
#I am Jenny and I like eating
info = "I am %s and I like %s" %("Kit", "dancing")
print(info)
#I am Kit and I like dancing

注意:虽然是%s,但其实可以接受任何类型

   但是使用%d,只能接受数字类型

%(key)s

可以使用key的形式来拼接值

%.xf

打印x位浮点数

 perct = 95.76778978757875378538
msg = "the percent is %.2f"%perct
print(msg)
#the percent is 95.77

%.xf  %%

打印百分比

 perct = 95.76778978757875378538
msg = "the percent is %.2f %%"%perct
print(msg)
#the percent is 95.77 %

.format() 格式化

空的{}来传值,不一一对应则报错

{0},{1},{2}...可以打乱顺序重新对应

字典形式

可以用字典形式传值,前面加**

可以用元组形式传值,前面加*

 s1 = "I am {}, I hate {}".format("Kit","sleeping")
print(s1)
#I am Kit, I hate sleeping
s2 = "I am {0}, I like{2} but hate {1}".format("Kit","sleeping","eating")
print(s2)
#I am Kit, I likeeating but hate sleeping
s3 = "I am {name}, I like {hobby}, but hate {fruit}".format(name="Kit",hobby="music",fruit="banana")
print(s3)
#I am Kit, I like music, but hate banana
s4 = "I am {name}, I like {hobby}, but hate {fruit}".format(**{"name":"Kit","hobby":"music","fruit":"banana"})
print(s4)
#I am Kit, I like music, but hate banana
s5 = "I am {}, I like {}, but hate {}".format(*("Kit","music","banana"))
print(s5)
#I am Kit, I like music, but hate banana
s6 = "I am {:s}, my age is {:d}, and my score is {:%}".format(*("Kit",18,0.15))
print(s6)
#I am Kit, my age is 18, and my score is 15.000000%

Python学习(五)—— 集合和字符格式化的更多相关文章

  1. Python学习五|集合、布尔、字符串的一些特点

    #集合本身就像无值的字典 list1 = set([1,2,3,4]) list2 = {1,2,3,4} print('list1 == list2?:',list1==list2)#list1 = ...

  2. python学习第四天 --字符编码 与格式化及其字符串切片

    字符编码 与格式化 第三天已经知道了字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采 ...

  3. python学习笔记20(字符串格式化)

    Python中内置有对字符串进行格式化的操作% 模板 格式化字符串时,Python使用一个字符串作为模板.模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式.Python用一个t ...

  4. python学习day3 编程语言分类 变量 格式化输出

    1.编程语言分类 机器语言:直接使用二进制指令直接编写程序,直接操作计算机硬件,必须考虑硬件细节 汇编语言:使用英文标签代替二进制指令去编写程序,直接操作计算机硬件,必须考虑硬件细节对,不过相比机器语 ...

  5. python学习之字符串常用方法和格式化字符串

    Python中的字符串同样适用标准的序列操作(索引,分片,乘法,成员判断,求长度,取最小值和最大值),但因为字符串是不可变的,因此字符串不支持分片赋值. s='http://www.baidu.com ...

  6. python学习之路_字符编码

    字符编码及python中的转码问题,这篇博客讲的比较清楚,python 之路,致那些年,我们依然没搞明白的编码

  7. python学习五

    打包代码与数据 数据结构要与数据匹配,数据结构影响代码的复杂性   列表 集合 字典 #创建与初始化 cleese={} cleese2=dict() cleese["name"] ...

  8. python基础之集合,字符编码

    六.集合类型 1.用途:关系运算 2.定义方式:s = {1,2,’a’} {}内用,分隔开多个元素,每个元素都必须是不可变(即可hash)类型 强调:2.1集合内的元素时无序的 2.2集合内的元素不 ...

  9. Python学习之==>集合

    1.简介 集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复数据的. 2.集合的作用 它可以把一个列表中重复的数据去掉,而不需要你再写判断 可以做关系测试,比 ...

随机推荐

  1. Activiti+Shiro实战

    有人曾说:人的差距都在业余时间拉开的……嗯,我现在深刻理解着这句话,作为一个程序员,技术男,就得不断学习新的技术,跟上时代步伐,才会让自己更有价值~~~~以下这个项目是个人利用业余时间学习并实践的~如 ...

  2. 剑指offer 面试题. 按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推.   方法1: 正常层次遍历,利用普通队列.逢 ...

  3. (GHRD)HPS

    DE1作为ARM+FPGA的组合,ARM和FPGA之间通信,两个区块间有三个通道可以让两部分实现传输数据,统称为 HPS-FPGA AXI Bridges. 分别为:FPGA-to-HPS Bridg ...

  4. python之路xml模块补充

    创建一个子节点一共有三个方式 创建一个子节点2.3

  5. Java-POJ1004-Financial Management

    题目大意:求出一年十二个月Larry平均每个月得到的利息 读入:12行每行一个浮点数 关于控制浮点数输出位数的资料:https://blog.csdn.net/hsliwei/article/deta ...

  6. Java多线程wait和notify协作,按序打印abc

    有一个经典的多线程面试题:启三个线程,按序打印ABC 上代码: package cn.javaBase.study_thread1; class MyRunnable1 implements Runn ...

  7. 动态设置微信小程序 navigationBarTitle 的值

    wx.setNavigationBarTitle({ title:' 动态值 ' })

  8. 【转载】JDBC操作LOB字段

    转自:http://www.cnblogs.com/tengtao93/p/4984689.html 1.LOB(Large Objects)大对象,是用来存储大量的二进制和文本数据的一种数据类型(一 ...

  9. MFC单文档视图中嵌入GLFW窗口

    开始学习OpenGL由于有一段时间,但是glfw只有窗口区,虽然通过某种手段(移步这里)可以加入工具栏,但仍然无法作为一个标准的GUI,而直接在MFC或Qt里面使用OpenGL API感觉有诸多制肘, ...

  10. 使用docker踩过的坑(二)

    关于docker的部署,我这里不多说了 下面写一些最近经常用到的命令: docker下载镜像: docker pull 镜像名 docker查看已下载的所有镜像: docker images dock ...