拓展

拓展

一、集合

(一)集合的定义与创建

Python中有一种内置类型叫作集合(Set),它是一个非常有用的数据结构。它与列表(List)的行为类似,唯一区别在于集合不会包含重复的值。

集合有两个重要的性质:

  1. 唯一性:即 集合中的元素都是唯一的,不能重复
  2. 无序性:即 集合中的元素是无序的

创建集合可以使用 花括号{} 或者 set();如果是空集合(不包含任何元素的集合),则必须使用set()定义

empty = set()	# 注意空集合不能使用 {} 定义
print(empty)
number = {1, 2, 3}
print(number)
mix = set([1, "hello", 3.14])
print(mix)
image-20230712165912107

(二)集合的增、删

  1. add()

    • 格式:set_name.add(element)
    • 参数:set_name代表集合的名字;element代表要向其中添加的元素
    • 作用:向集合中添加元素
    n = {1, 2, 3}
    n.add(4)
    print(n)
    n.add(3)
    print(n)
    
    image-20230712170246568

    从执行结果可以发现,add()方法在添加新元素时,如果新的元素与原来的元素没有重复,则正常添加元素;如果新的元素与原集合中的元素相同,则不会添加新的元素。这样保证了集合的唯一性。

  2. remove()

    • 格式:set_name.remove(element)
    • 参数:set_name代表集合的名字;element代表要删除的元素
    • 作用:在集合中删除元素
    n = {1, 2, 3}
    n.remove(2)
    print(n)
    
    image-20230712170602976

(三)集合的用法

  1. Python中的集合可以看成数学意义上的无序和无重复元素的集合,并且Python自带的集合类型支持很多数学意义上的集合操作,例如:

    n1 = {1, 3, 5}
    n2 = {2, 7, 1, 3}
    print("交集", n1 & n2)
    print("并集", n1 | n2)
    print("差集", n1 - n2)
    print("对称差集", n1 ^ n2)
    
    image-20230712171853428
  2. 集合有时还用于列表的去重操作,例如:

    ls = [1, 2, 3, 3, 3, 2, 4, 5]
    # 使用 set() 去除重复的数字
    num = set(ls)
    print(num)
    # 再将集合转回列表
    ls = list(num)
    
    image-20230712171313837

二、推导式

Pyhton支持三种推导式,分别对应列表、字典和集合。它能够以非常自然、简单的方式构建列表、字典或集合。

(一)列表推导式

列表推导式的语法:用中括号括起来,中间使用for语句,后面跟着if语句用作判断,满足条件的传到for语句前面用作构建的列表。例如:

ls1 = [x for x in range(5)]
print(ls1)
odd = [x for x in range(10) if x % 2 != 0]
print(odd)
image-20230712172655340

列表推导式最擅长的方式就是对整个列表分别做相同的操作,并且返回得到一个新的列表。

(二)字典推导式

字典推导式和列表推导式类似。字典的元素是成对出现的,所以推导式定义的时候也是成对生成键值对。

d1 = {n: n**2 for n in range(5)}
print(d1)
d2 = {v : k for k,v in d1.items()}
print(d2)
image-20230712172949001

(三)集合推导式

集合推导式基本上和列表推导式没什么区别,但是集合推导式会帮我们去除重复的元素,并且不适用中括号,而是使用花括号。例如:

s1 = {i**2 for i in [-1, -5, 1, 2, -2]}
print(s1)
image-20230712173219579

三、关于浅拷贝和深拷贝

posted @ 2023-10-16 11:50  离渊灬  阅读(38)  评论(0)    收藏  举报