Python学习笔记(三)

目录

1.集合的定义

2.集合的创建

3.集合元素的判断操作

4.集合元素的新增

5.集合元素的删除

6.集合之间的关系

7.集合的数学操作

8.集合生成式

9.列表、字典、元组、集合总结

10.字符串的概念

11.字符串的定义


1.集合的定义

  • python语言提供的内置数据结构
  • 与列表、字典一样都属于可变类型的序列
  • 集合是没有value的字典(花括号定义,底层数据结构也采用了hash表)

2.集合的创建

  • 用{}创建
s={'Python','hello',90}
  • 用内置函数set()创建
s=set(range(6))
print(s)                  #{0, 1, 2, 3, 4, 5}

#集合元素不能重复
print(set([3,4,5,5,7,7]))        #列表转成集合,同时去掉了重复元素,集合中元素无序,通过hash存储,{3, 4, 5, 7}
print(set((3,4,5,8)))            #元组转成集合,同时去掉了重复元素,集合中元素无序,通过hash存储,{8, 3, 4, 5}
print(set('Python'))             #字符串转成集合,同时去掉了重复元素,集合中元素无序,通过hash存储,{'P', 't', 'h', 'y', 'n', 'o'}
print(set({1,2,3,9,5}))          #集合转成集合,同时去掉了重复元素,集合中元素无序,通过hash存储,{1, 2, 3, 5, 9}
print(set())                     #定义空集合,set()

#不可以直接使用花括号定义空集合
s={}                             #这是字典类型

3.集合元素的判断操作

  • in 或 not in
s={10,20,30,100}
print(10 in s)         #True
print(90 in s)         #False
print(80 not in s)     #True
print(20 not in s)     #False

4.集合元素的新增

  • 调用add()方法,一次添加一个元素
  • 调用update()方法,至少添加一个元素
s={10,20}
s.add(100)
print(s)        #{100, 10, 20}
s.update({200,400})
print(s)        #{400, 100, 20, 200, 10}
s.update([70,60])
s.update((50,))
print(s)        #{400, 50, 100, 20, 70, 200, 10, 60}

5.集合元素的删除

  • 调用remove()方法,一次删除一个指定元素,如果指定元素不存在抛出KeyError
  • 调用discard()方法,一次删除一个指定元素,如果指定元素不存在不抛出异常
  • 调用pop()方法,一次只删除一个任意元素
  • 调用clear()方法,清空集合
s={10,40,20,80,30}
s.remove(80)             
print(s)
#s.remove(100)          #抛出异常KeyError

s.discard(100)          #100不存在,但是不会抛出异常

s.pop()                 #删除任意元素,不能指定参数

s.clear()               #set(),清空集合

6.集合之间的关系

  • 两个集合是否相等
#使用==或者!=进行判断
s1={10,20,30,40}
s2={40,30,10,20}
print(s1==s2)                    #True
print(s1!=s2)                    #False
  • 一个集合是否是另一个集合的子集
s1={10,20,30,40,50,60}
s2={10,20,30,40}
s3={10,20,90}
print(s2.issubset(s1))      #True
print(s3.issubset(s1))      #False
  • 一个集合是否是另一个集合的超集
s1={10,20,30,40,50,60}
s2={10,20,30,40}
s3={10,20,90}
print(s1.issuperset(s2))      #True
print(s1.issuperset(s3))      #False
  • 两个集合是否不相交
s1={10,20,30,40,50,60}
s2={10,20,30,40}
s3={80,90}
print(s1.isdisjoint(s2))      #False
print(s1.isdisjoint(s3))      #True

7.集合的数学操作

  • 交集
s1={10,20,30,40}
s2={20,30,40,50,60}
#intersection()方法与&等价,求交集
print(s1.intersection(s2))       #{40, 20, 30}
print(s1 & s2)                   #{40,20,30}
  • 并集
s1={10,20,30,40}
s2={20,30,40,50,60}
#union()方法与|等价,求并集
print(s1.union(s2))       #{40, 10, 50, 20, 60, 30}
print(s1 | s2)            #{40, 10, 50, 20, 60, 30}
  • 差集
s1={10,20,30,40}
s2={20,30,40,50,60}
#difference()方法与-等价,求差集
print(s1.difference(s2))         #{10}
print(s1 - s2)                   #{10}
  • 对称差集
s1={10,20,30,40}
s2={20,30,40,50,60}
#symmetric_difference()方法与^等价,求对称差集
print(s1.symmetric_difference(s2))       #{50, 10, 60}
print(s1 ^ s2)                           #{50, 10, 60},s1中的10和s2中的50,60

8.集合生成式

s={i*i for i in range(6)}
print(s)                     #{0, 1, 4, 9, 16, 25}

9.列表、字典、元组、集合总结

数据结构 是否可变 是否重复 是否有序 定义符号
列表(list) 可变 可重复 有序 []
元组(tuple) 不可变 可重复 有序 ()
字典(dict) 可变 key不可重复 无序 {key:value}
value可重复
集合(set) 可变 不可重复 无序 {}

10.字符串的概念

  • 在python中字符串是基本数据类型,是一个不可变的字符序列
  • 字符串的驻留机制:仅保留一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新的变量

11.字符串的定义

a='Python'
b="Python"
c='''Python'''
print(a,b,c)             #Python Python Python
print(id(a),id(b),id(c)) #2838701557664 2838701557664 2838701557664,可以看到id相同
a+=b
print(a,b)               #Pythonb Python
print(id(a),id(b),id(c)) #2838703054896 2838701557664 2838701557664,可以看到a的id改变了

备注:在需要进行字符串拼接时建议使用str类型的joint()方法,而非+,因为join()方法是先计算出所有字符串的长度,然后再拷贝,只new一次对象,效率要比“+”高

你可能感兴趣的:(python笔记,python,字符串,集合)