目录
1、集合
1.1、定义集合
1.2、在集合中添加元素,add()
1.3、删除集合中的元素,remove()
1.4、集合操作
2、推导式
2.1、列表推导式
2.2、字典推导式
2.3、集合推导式
Python中有一种内置类型叫做集合(Set),它是一种非常有用的数据结构,它与列表(List)的行为类似,唯一区别在于集合不会包含重复的值。
empty=set() #定义空集合,空集合不能使用{}定义 number={1,2,3} mix=set([1,"你好",321,"hello"]) print("空集合",empty) print("数字集合",number) print("混合集合",mix) #执行结果 空集合 set() 数字集合 {1, 2, 3} 混合集合 {321, 1, 'hello', '你好'}
注意:
如果是空集合(不包含任何元素的集合),必须使用set()定义;
如果包含元素,则可以使用花括号“{}”定义集合,也可以使用set加上列表来定义。
number={1,2,3,4} print(number) number.add(5) print(number) number.add("hello") print(number) number.add(5) #与集合中已有元素重复,无法添加 print(number) #执行结果 {1, 2, 3, 4} {1, 2, 3, 4, 5} {1, 2, 3, 4, 5, 'hello'} {1, 2, 3, 4, 5, 'hello'} #第二个5没有添加进来
add方法在添加新元素时,如果新的元素与原来的元素没有重复,则可以正常添加进集合,如果新的元素与原集合中的元素相同,则不会添加新的元素。这样保证了集合元素的唯一性。
number={1,2,3,4,5} print(number) number.remove(3) print(number) number.remove(4) print(number) #执行结果 {1, 2, 3, 4, 5} {1, 2, 4, 5} {1, 2, 5}
注意:remove方法不能用于不存在的元素,如果元素不存在,Python解释器将会输出错误信息。
Python中的集合可以看成是数学意义上的无序和无重复元素的集合,并且Python自带的集合类型支持很多数学意义上的集合操作,例如:
n1={1,3,5,7} n2={2,5,1,6,8} print("n1",n1) print("n2",n2) print("交集",n1 & n2) print("并集",n1 | n2) print("差集",n1 - n2) print("对称差集",n1 ^ n2) #执行结果 n1 {1, 3, 5, 7} n2 {1, 2, 5, 6, 8} 交集 {1, 5} 并集 {1, 2, 3, 5, 6, 7, 8} 差集 {3, 7} 对称差集 {2, 3, 6, 7, 8} # 两个集合中所有不相同的元素
Python支持三种推导式(或者称解析式),分别对应列表、字典和集合。它能够以非常自然、简单的方式构建列表、字典或集合,就像数学家做的那样。
列表推导式的语法:用中括号括起来,中间使用for语句,后面跟着if语句用作判断,满足条件的传到for语句前面用作构建的列表。
a1=[x for x in range(5)] print(a1) odd=[x for x in range(10) if x%2 !=0] print(odd) #执行结果 [0, 1, 2, 3, 4] [1, 3, 5, 7, 9]
列表推导式最擅长的方式就是对整个列表分别做相同的操作,并且返回得到一个新的列表。
字典推导式和列表推导式类似,字典的元素是成对出现的,所以推导式定义的时候也是成对生成键值对。例如:
d1={n:n**2 for n in range(5)} print(d1) d2={v:k for k,v in d1.items()} print(d2) #执行结果 {0: 0, 1: 1, 2: 4, 3: 9, 4: 16} {0: 0, 1: 1, 4: 2, 9: 3, 16: 4}
集合推导式基本上和列表推导式没什么区别,但是集合推导式会帮我们去除重复的元素,并且不适用中括号,而是使用花括号。例如:
s1={i**2 for i in [-5,-2,-1,1,2,3,]} print(s1) #执行结果 {25, 4, 1, 9}