【新人系列】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}
创建集合
- 使用 { } 创建
在 Python中,创建 set 集合可以像列表、元素和字典一样,直接将集合赋值给变量,其语法格式如下:
setname = {element1, element2, ..., elementn}
集合会帮我们自动去重,并且不会以特定的顺序存储元素。
languages = {'python', 'ruby', 'python', 'c'}
print(languages) # {'ruby','python','c}
- set( ) 函数创建集合
set( ) 函数为 Python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成集合。该函数的语法格式如下:
setname = set(iteration)
比如下面我将一个字符串转换成集合的形式,则会得到一个去重后的字符集。
str = "helloworld"
print(set(str)) # {'e', 'd', 'o', 'l', 'h', 'w', 'r'}
添加、删除集合元素
- 添加元素
set 集合中添加元素,可以使用 set 类型提供的 add( ) 方法实现,该方法的语法格式为:
setname.add(element)
- 删除元素
删除现有 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'}
集合推导式
集合推导式跟列表推导式差不多,都是对一个列表的元素全部执行相同的操作,但集合是一种无重复无序的序列,跟列表推导式的区别在于:
- 不使用中括号,使用大括号
- 结果中无重复
- 结果是一个 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)!