python集合元素可以是字符串吗_Python学习(五)—— 集合和字符格式化

数据类型和变量的总结

字符串

数字

列表

元组

字典

分类

1、可变不可变:

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

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

2、访问顺序:

直接访问:数字

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

映射访问:字典

3、存放元素个数:

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

原子类型:数字、字符串

集合

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

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

1 s = {1,3,5,2,6,5}2 print(s)3 #{1, 2, 3, 5, 6}

4 for i ins:5 print(i)6 """

7 18 29 310 511 612 """

13 s1 = set("alexx")14 print(s1)15 #{'l', 'a', 'x', 'e'}

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

1 s2 = set(["alex","alex","sb"])2 #s2 = set("alex","alex","sb")=>Wrong

3 print(s2)4 #{'alex', 'sb'}

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

1 s = frozenset("hello")2 print(s)3 #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()   ^

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

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.symmetric_difference(Math_s))6 """

7 {'John', 'Tom', 'Paul'}8 """

集合的类中功能

.add()

添加元素

.clear()

清空

.copy()

拷贝

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

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

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

5 s.remove(5)6 print(s)7 #{2, 3, 6, 'sad'}

8 s.discard("sadddd")9 print(s)

.difference_update()

求完差集后更新

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

.isdisjoint()

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

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

s1.issubset(s2)

判断s1是否是s2的子集

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

s1.issuperset(s2)

判断s1是否是s2的父集

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

s1.update(s2)

将s1更新为s2

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

.add()

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

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

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

字符串格式化

%s

1 msg = "I am %s and I like eating"%"Jenny" #%是固定格式,s代表是字符串形式

2 print(msg)3 #I am Jenny and I like eating

4 info = "I am %s and I like %s" %("Kit", "dancing")5 print(info)6 #I am Kit and I like dancing

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

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

%(key)s

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

%.xf

打印x位浮点数

1 perct = 95.76778978757875378538

2 msg = "the percent is %.2f"%perct3 print(msg)4 #the percent is 95.77

%.xf  %%

打印百分比

1 perct = 95.76778978757875378538

2 msg = "the percent is %.2f %%"%perct3 print(msg)4 #the percent is 95.77 %

.format() 格式化

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

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

字典形式

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

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

1 s1 = "I am {}, I hate {}".format("Kit","sleeping")2 print(s1)3 #I am Kit, I hate sleeping

4 s2 = "I am {0}, I like{2} but hate {1}".format("Kit","sleeping","eating")5 print(s2)6 #I am Kit, I likeeating but hate sleeping

7 s3 = "I am {name}, I like {hobby}, but hate {fruit}".format(name="Kit",hobby="music",fruit="banana")8 print(s3)9 #I am Kit, I like music, but hate banana

10 s4 = "I am {name}, I like {hobby}, but hate {fruit}".format(**{"name":"Kit","hobby":"music","fruit":"banana"})11 print(s4)12 #I am Kit, I like music, but hate banana

13 s5 = "I am {}, I like {}, but hate {}".format(*("Kit","music","banana"))14 print(s5)15 #I am Kit, I like music, but hate banana

16 s6 = "I am {:s}, my age is {:d}, and my score is {:%}".format(*("Kit",18,0.15))17 print(s6)18 #I am Kit, my age is 18, and my score is 15.000000%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值