自学内容网 自学内容网

【新人系列】Python 入门(十):数据结构 - 下

✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog
📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html
📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~
📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~
❤️ 如果有收获的话,欢迎点赞 👍 收藏 📁 关注,您的支持就是我创作的最大动力 💪

5. set 集合

Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 { } 中,相邻元素之间用 , 分隔,如下所示:

{element1, element2, ..., elementn}

创建集合

  1. 使用 { } 创建

在 Python中,创建 set 集合可以像列表、元素和字典一样,直接将集合赋值给变量,其语法格式如下:

setname = {element1, element2, ..., elementn}

集合会帮我们自动去重,并且不会以特定的顺序存储元素。

languages = {'python', 'ruby', 'python', 'c'}
print(languages)    # {'ruby','python','c}
  1. set( ) 函数创建集合

set( ) 函数为 Python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成集合。该函数的语法格式如下:

setname = set(iteration)

比如下面我将一个字符串转换成集合的形式,则会得到一个去重后的字符集。

str = "helloworld"
print(set(str))     # {'e', 'd', 'o', 'l', 'h', 'w', 'r'}

添加、删除集合元素

  1. 添加元素

set 集合中添加元素,可以使用 set 类型提供的 add( ) 方法实现,该方法的语法格式为:

setname.add(element)
  1. 删除元素

删除现有 set 集合中的指定元素,可以使用 remove( ) 方法,该方法的语法格式如下:

setname.remove(element)

差集、交集和并集

在这里插入图片描述
在这里插入图片描述

list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 5, 6, 7]

# 差集
set1 = set(list2).difference(set(list1))
print(set1)     # {6, 7}

# 交集
set2 = set(list1).intersection(set(list2))
print(set2)     # {1, 2, 5}

# 并集
set3 = set(list1).union(set(list2))
print(set3)     # {1, 2, 3, 4, 5, 6, 7}

6. 获取对象长度

Python 中,要想知道一个对象长度,或者一个字符串占用多少个字节,可以使用 len 函数。

len 函数的基本语法格式为:

len(obj)

其中 obj 用于指定要进行长度统计的对象,可以是字符串、列表、元组、字典等。
以 UTF-8 编码为例,字符串 “人生苦短,我用 Python” 所占用的字节数如下图所示。

在这里插入图片描述

Tips:
在 UTF-8 编码中,英文每个字符占用 1 个字节,中文每个汉字占用 3 个字节。
在 gbk 编码中,英文每个字符占用 1 个字节,中文每个汉字占用 2 个字节。

通过使用 encode( ) 方法,将字符串进行编码后再获取它的字节数。例如,采用不同编码方式,计算 “人生苦短,我用Python!” 的字节数,可以执行如下代码:

str1 = "人生苦短,我用Python!"
print(len(str1.encode('utf-8')))   # 28
print(len(str1.encode('gbk')))     # 21

7. Python 推导式

推导式 comprehensions(又称解析式),是 Python 的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体,共有三种推导,在 Python2 和 3 中都有支持:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式

列表推导式

列表推导式书写形式:

[表达式 for 变量 in 列表] 
或者 
[表达式 for 变量 in 列表 if 条件]

可以看一些例子来快速掌握。

list1 = [i for i in range(1, 10)]
print(list1)    # [1, 2, 3, 4, 5, 6, 7, 8, 9]

list2 = [i * 2 for i in range(1, 10)]
print(list2)    # [2, 4, 6, 8, 10, 12, 14, 16, 18]

list3 = [i * 2 for i in range(1, 10) if i > 5]
print(list3)    # [12, 14, 16, 18]

list4 = ["hello" for i in range(1, 10)]
print(list4)    # ['hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello']

字典推导式

字典推导和列表推导的使用方法是类似的,只不过中括号该改成大括号。

# 快速调换key和value的位置
dict1 = {"a": 1, "b": 2, "c": 3, "d": 4}
dict1 = {value: key for key, value in dict1.items()}
print(dict1)  # {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

dict2 = {value * 2: key for key, value in dict1.items()}
print(dict2)  # {2: 'a', 4: 'b', 6: 'c', 8: 'd'}

集合推导式

集合推导式跟列表推导式差不多,都是对一个列表的元素全部执行相同的操作,但集合是一种无重复无序的序列,跟列表推导式的区别在于:

  1. 不使用中括号,使用大括号
  2. 结果中无重复
  3. 结果是一个 set( ) 集合
# 自动去重
list1 = [1, 2, 3, 4, 1, 2, 5]
set1 = {i for i in list1}
print(set1)  # {1, 2, 3, 4, 5}

set2 = {i * 2 for i in list1}
print(set2)  # {2, 4, 6, 8, 10}

原文地址:https://blog.csdn.net/Newin2020/article/details/143673829

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!