目录
1、集合
Python中有一种内置类型叫做集合(Set),它是一种非常有用的数据结构,它与列表(List)的行为类似,唯一区别在于集合不会包含重复的值。
1.1、定义集合
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加上列表来定义。
1.2、在集合中添加元素,add()
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方法在添加新元素时,如果新的元素与原来的元素没有重复,则可以正常添加进集合,如果新的元素与原集合中的元素相同,则不会添加新的元素。这样保证了集合元素的唯一性。
1.3、删除集合中的元素,remove()
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解释器将会输出错误信息。
1.4、集合操作
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} # 两个集合中所有不相同的元素
2、推导式
Python支持三种推导式(或者称解析式),分别对应列表、字典和集合。它能够以非常自然、简单的方式构建列表、字典或集合,就像数学家做的那样。
2.1、列表推导式
列表推导式的语法:用中括号括起来,中间使用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]
列表推导式最擅长的方式就是对整个列表分别做相同的操作,并且返回得到一个新的列表。
2.2、字典推导式
字典推导式和列表推导式类似,字典的元素是成对出现的,所以推导式定义的时候也是成对生成键值对。例如:
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}
2.3、集合推导式
集合推导式基本上和列表推导式没什么区别,但是集合推导式会帮我们去除重复的元素,并且不适用中括号,而是使用花括号。例如:
s1={i**2 for i in [-5,-2,-1,1,2,3,]}
print(s1)
#执行结果
{25, 4, 1, 9}