06-Python元组,列表,字典,集合数据结构
一、简介
数据结构是我们用来处理一些数据的结构,用来存储一系列的相关数据。
在python中,有列表,元组,字典和集合四种内建的数据结构。
二、列表
用于存储任意数目、任意类型的数据集合。列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表可以包含数字,字符串等,表示如下:
a = [1,’name’,’努力奋斗’,True]
列表的创建:
1.基础创建
a = []
2.list创建
a = list()
3.range创建整数列表
range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。语法格式为:
range(start, end ,step)
start 参数:可选,表示起始数字。默认是0
end 参数:必选,表示结尾数字。
step 参数:可选,表示步长,默认为1
a = list(range(4)) 则a = [0,1,2,3]
a = list(range(3,10,2)) 则a = [3, 5, 7, 9]
以下是一些常用的方法(以a = [1,’name’,’努力奋斗’,True],b = [1,’a’,False]例):
|
方法 |
含义 |
描述 |
例子 |
结果 |
|
list.append(x) |
增加元素 |
将元素x 增加到列表list 尾部 |
a.append(10) |
a = [1,’name', '努力奋斗', True, 10] |
|
list.extend(aList) |
增加元素 |
将列表alist 所有元素加到列表list 尾部 |
a.extend(b) |
a = [1,’name', '努力奋斗', True,, 1, 'a', False] |
|
list.insert(index,x) |
增加元素 |
在列表list 指定位置index 处插入元素x |
a.insert(2,8) |
a = [1, 'name', 8, '努力奋斗', True] |
|
list.remove(x) |
删除元素 |
在列表list 中删除首次出现的指定元素x |
a.remove(1) |
a = ['name', '努力奋斗', True] |
|
list.pop(index) |
删除元素 |
删除并返回列表list 指定位置index 处的元素,默认是最后一个元素 |
a.pop(2) |
a.pop(2)返回'努力奋斗',则a = [1, 'name', True] |
|
list.clear() |
删除元素(所有) |
删除列表所有元素,并不是删除列表对象 |
a.clear() |
a = [] |
|
list.index(x) |
访问元素 |
返回第一个x 的索引位置,若不存在x 元素抛出异常 |
a.index(‘name’) |
返回结果1,即;name在列表中的排序是1 |
|
list.count(x) |
计数 |
返回指定元素x 在列表list 中出现的次数 |
a.count(‘name’) |
返回1,即name在列表a中出现了1次 |
|
list.count(x) |
计数 |
返回指定元素x 在列表list 中出现的次数 |
a.count(True) a.count(1) |
返回2,即True在列表a中出现了2次,在这个列表中1可以认为是True,同理True也可以认为是1 |
|
len(list) |
列表长度 |
返回列表中包含元素的个数 |
Len(a) |
返回4,即在这个列表中有4个元素 |
|
list.reverse() |
翻转列表 |
所有元素原地翻转 |
a.reverse() |
a = [True, '努力奋斗', 'name', 1] |
|
list.sort() |
排序 |
所有数字元素原地排序 |
a.sort() |
这个会报异常,因为列表中同时含有字符串和数字不能排序 |
|
list.copy() |
浅拷贝 |
返回列表对象的浅拷贝 |
c = a.copy() |
c = [1, 'name', '努力奋斗', True] |
三、元组
元组用来将多样的对象集合到一起,元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。
元组的创建:
1.基础创建
a = ()
2.tuple创建
a = tuple()
3..range创建整数元组
a = tuple(range(4)) ---------àa = (0, 1, 2, 3)
总结:
tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。
list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。
注意:元组只有一个元素时必须在后面加逗号,如:a = (1,)
元组中有非零个元素时,可以省去括号,如
a = (1,) 和 a = 1,相同
a = (a = 1,'name','努力奋斗',True) 和 a = 1,'name','努力奋斗',True相同
但是为保证书写的规范,还是建议随时随地带上括号。
元组的访问:元组可以使用下标索引来访问元组中的值,如下实例:

元组的截取:

注意:在列表和元组中,正向排序第一个元素是0位,第二位元素是1位,以此类推。反向排序倒数第一位是-1位。
截取元素时,规则是包头不包尾,即包含开始的元素,不包含结尾的元素。以a[1:4]为例,包含1位(第二个)元素,不包含4位(第五个)元素。
元组的内置函数
1. len(tuple)-----------计算元组元素个数。
2. max(tuple)---------返回元组中元素最大值。
3. min(tuple)----------返回元组中元素最小值。
4. tuple(list)-----------将列表转换为元组。
5. um(tuple)-----------计算数字元组的和。
Zip
zip(列表1,列表2,...)将多个列表对应位置的元素组合成为元组,并返回这个zip 对象。


注意:这个zip对象只能使用一次,之后便会失效。
四、字典
字典是由键值对组成的无序可变序列,在字典中,健必须是唯一且不可重复的,但值可以是任意数据,且可以重复。
字典的创建
1.基础创建
a = {}
2.通过tuple创建
a = dict()
3.通过zip创建
a = [1,'name','努力奋斗',True]
b = [1,2,3]
dict(zip(a,b))

4. 通过fromkeys 创建值为空的字典
a = dict.fromkeys(['today','work','time'])

字典的增删改查
增:在字典里增加新的键值对
>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a['eat'] = 'chicken'
>>>a
{'today': '2019/7', 'work': 'waiter', 'time': 10, 'eat': 'chicken'}
删:分为两种,一种是删除字典里的键值对,但字典还存在,只是为空字典;另一种直接删除这个字典,使其不存在。
>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a.clear() #清空字典
>>>a
{}
>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>del a
>>>a #删除字典后不存在,所以报错
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'a' is not defined
改:修改字典的值,健不能修改
>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a['time'] = 12
>>>a
{'today': '2019/7', 'work': 'waiter', 'time': 12}
查:使用相应的健查询
>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a['today']
'2019/7'
>>>a.get('time')
10
两种方式的不同在于,[]访问的健如果不存在会报错,get()访问的健不存在则会返回None。
查询所有键值对
>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a.items()
dict_items([('today', '2019/7'), ('work', 'waiter'), ('time', 10)])
查询所有健或值
>>>a = {'today': '2019/7', 'work': 'waiter', 'time': 10}
>>>a.keys()
dict_keys(['today', 'work', 'time'])
>>>a.values()
dict_values(['2019/7', 'waiter', 10])
五、集合
集合是一个无序的不重复元素序列。
集合的创建:使用大括号{}或者set()创建,但是创建空集合只能使用set()创建。Set可以将列表元组转换为集合,但是会消除重复的部分。字典也可转换为集合,但只保留健。
a = {1,’name’,3}
>>>a = set('1name3')
>>.a
{'3', 'e', 'n', 'm', '1', 'a'}
列表转换为集合
>>>a = [1,'name','努力奋斗',True]
>>>set(a)
{1, 'name', '努力奋斗'}
元组转换为集合
>>>a = (1,'name','努力奋斗',True)
>>>set(a)
{1, 'name', '努力奋斗'}
字典转换为集合
>>>a = {1:'name','努力奋斗':True}
>>>set(a)
{1, '努力奋斗'}
集合的并集,交集与差集,以a = {2,’your’,’Bob’,5},b = {‘name’,’Bob’,21}为例。
并集:合为同一个集合,去除重复项
>>>a = {2,'your','Bob',5}
>>>b = {'name','Bob',21}
>>>a|b
{2, 'Bob', 5, 'your', 21, 'name'}
>>>a.union(b)
{2, 'Bob', 5, 'your', 21, 'name'}
交集:两个集合的相同部分
>>>a = {2,'your','Bob',5}
>>>b = {'name','Bob',21}
>>>a&b
{'Bob'}
>>>a.intersection(b)
{'Bob'}
差集:一个集合在另一个集合没有的部分。
>>>a = {2,'your','Bob',5}
>>>b = {'name','Bob',21}
>>>a - b
{2, 5, 'your'}
>>>a.difference(b)
{2, 5, 'your'}
集合一些内置方法
|
方法 |
说明 |
|
add() |
为集合添加元素 |
|
clear() |
移除集合中的所有元素 |
|
copy() |
拷贝一个集合 |
|
difference() |
返回多个集合的差集 |
|
difference_update() |
移除集合中的元素,该元素在指定的集合也存在。 |
|
discard() |
删除集合中指定的元素 |
|
intersection() |
返回集合的交集 |
|
intersection_update() |
返回集合的交集。 |
|
isdisjoint() |
判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
|
issubset() |
判断指定集合是否为该方法参数集合的子集。 |
|
issuperset() |
判断该方法的参数集合是否为指定集合的子集 |
|
pop() |
随机移除元素 |
|
remove() |
移除指定元素 |
|
symmetric_difference() |
返回两个集合中不重复的元素集合。 |
|
symmetric_difference_update() |
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
|
union() |
返回两个集合的并集 |
|
update() |
给集合添加元素 |
06-Python元组,列表,字典,集合数据结构的更多相关文章
- python中元组/列表/字典/集合
转自:https://blog.csdn.net/lobo_seeworld/article/details/79404566
- python 元组 列表 字典
type()查看类型 //取整除 **幂 成员运算符: in x在y序列中,就返回true 反之 not in 身份运算符: is is not 逻辑运算符 and or not 字符编码 问题 ...
- Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据
Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...
- python :列表 字典 集合 类 ----局部变量可以改全局变量
#列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def ...
- python基础一 -------如何在列表字典集合中根据条件筛选数据
如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) fi ...
- 初识python 字符串 列表 字典相关操作
python基础(一): 运算符: 算术运算: 除了基本的+ - * / 以外,还需要知道 : // 为取整除 返回的市商的整数部分 例如: 9 // 2 ---> 4 , 9.0 // ...
- python字符串/列表/字典互相转换
python字符串/列表/字典互相转换 目录 字符串与列表 字符串与字典 列表与字典 字符串与列表 字符串转列表 1.整体转换 str1 = 'hello world' print(str1.spli ...
- python元组 列表 (取值、替换、插入、添加、删除)
1.元组 列表 字典 元组( 元组是不可变的) hello = (1,2,3,4,5) type(hello)
- Python列表,元组,字典,集合
列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. 列表追加数据的方法:append(),extend(数组),insert(位 ...
- 如何在列表,字典,集合中,根据条件筛选数据 -- Python数据结构与算法相关问题与解决技巧
实际案例: 1.过滤掉列表 [3,9,-1,10,20,-2..]的负数 2.筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项 3.筛出集合 {77,89, ...
随机推荐
- c常用函数-strlwr 和 strupr
strlwr 和 strupr strlwr的功能是把一个字符串全部变成小写, strupr的功能则是把一个字符串全部变成大写.语法结构分别如下: Action() { char test[] = & ...
- Day7-微信小程序实战-引入iconfont(充分利用iconfont图标库的资源)
一.引入iconfont 首先在iconfont.com中注册登陆: 点击上方[图标管理]并进入我的项目 注意:如果没有项目的话,就点击右边的来创建项目 在官网中找到想要的图标之后,以SVG的形式下载 ...
- JAVA 经典算法 40 例
[程序 1] 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列 ...
- 3、尚硅谷_SSM高级整合_使用ajax操作实现删除的功能
点击删除的时候,要删除联系人,这里同点击编辑按钮一样给删除按钮添加点击事件的时候不能使用 $(".delete_btn").click(function(){ }); 这种方式,因 ...
- Python学习之准备工作
Python学习之准备工作 编程语言历史 在计算机硬件基础中我们大概介绍了一下计算机的发展历史.了解到在曾经有一段时期里计算机是不存在操作系统这一概念的,所有需要计算机完成的操作都需要当时的程序员来与 ...
- java-递归(文件查找)
import java.io.File; /** * @Author: heq * @Date: 2020/6/23 20:51 */ public class Test { public stati ...
- Python干货整理之数据结构篇
1 stack的实现 实现接口: init() 用于初始化stack,数据类型为list size() 用于获得stack的大小 push() 用于往栈中添加元素,添加的元素类型可以是int或者lis ...
- SpringBoot之入门教程-SpringBoot项目搭建
SpringBoot大大的简化了Spring的配置,把Spring从配置炼狱中解救出来了,以前天天配置Spring和Mybatis,Springmvc,Hibernate等整合在一起,感觉用起来还是挺 ...
- 收藏python开发各种资源官方文档
http://json.cn/ https://cn.bing.com/ https://processon.com/ https://docs.djangoproject.com/en/1.11/r ...
- 来看下css边框阴影怎么设置?这些方法掌握后工作更轻松
我们在网页设计中,通常会使用ps工具来达到图片或者边框阴影.立体等效果.但是如果一些基础效果都需要用p图来完成那就显得效率比较低了.其实可以使用CSS来设置边框阴影,下面本篇文章来给大家介绍一下. 在 ...