一、简介

数据结构是我们用来处理一些数据的结构,用来存储一系列的相关数据。

在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元组,列表,字典,集合数据结构的更多相关文章

  1. python中元组/列表/字典/集合

    转自:https://blog.csdn.net/lobo_seeworld/article/details/79404566

  2. python 元组 列表 字典

    type()查看类型 //取整除 **幂 成员运算符: in  x在y序列中,就返回true 反之  not in 身份运算符: is is not 逻辑运算符 and or not 字符编码 问题 ...

  3. Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据

    Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...

  4. python :列表 字典 集合 类 ----局部变量可以改全局变量

    #列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def ...

  5. python基础一 -------如何在列表字典集合中根据条件筛选数据

    如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) fi ...

  6. 初识python 字符串 列表 字典相关操作

    python基础(一): 运算符: 算术运算: 除了基本的+ - * / 以外,还需要知道 :  // 为取整除 返回的市商的整数部分 例如: 9 // 2  ---> 4  , 9.0 //  ...

  7. python字符串/列表/字典互相转换

    python字符串/列表/字典互相转换 目录 字符串与列表 字符串与字典 列表与字典 字符串与列表 字符串转列表 1.整体转换 str1 = 'hello world' print(str1.spli ...

  8. python元组 列表 (取值、替换、插入、添加、删除)

    1.元组 列表 字典 元组( 元组是不可变的) hello = (1,2,3,4,5) type(hello)

  9. Python列表,元组,字典,集合

    列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. 列表追加数据的方法:append(),extend(数组),insert(位 ...

  10. 如何在列表,字典,集合中,根据条件筛选数据 -- Python数据结构与算法相关问题与解决技巧

    实际案例: 1.过滤掉列表 [3,9,-1,10,20,-2..]的负数 2.筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项 3.筛出集合 {77,89, ...

随机推荐

  1. Anaconda 安装 以及conda使用

    下载 https://www.anaconda.com/distribution/#macos 管理 conda 版本查看 conda --version conda 版本更新 conda updat ...

  2. 三星note8港版如何显示电量百分比呢?

    设置-通知-状态栏,显示电量百分比打钩即可.

  3. 在群晖NAS上运行URLOS之后竟然能安装Discuz! Q!!

    如果我们手头上有1台群晖NAS时,有没有考虑过把群晖NAS当成服务器来使用,这样会不会很有意思呢? 现在,我们终于可以尝试一番了,把群晖NAS变成一台实实在在的服务器,在上面跑各种运行环境!其实很简单 ...

  4. 小师妹学JVM之:JIT中的LogCompilation

    目录 简介 LogCompilation简介 LogCompilation的使用 解析LogCompilation文件 总结 简介 我们知道在JVM中为了加快编译速度,引入了JIT即时编译的功能.那么 ...

  5. 剑指 Offer 09. 用两个栈实现队列

    剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的 ...

  6. WeChair项目Alpha冲刺(7/10)

    团队项目进行情况 1.昨日进展    Alpha冲刺第七天 昨日进展: 前端:页面修改和完善,安排页面美化 后端:和前端成功交互,数据解密成功 数据库:修改数据表属性,与后端部署数据库交互 2.今日安 ...

  7. Beta冲刺<1/10>

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第一天(05.19) 作业正文 如下 其他参考文献 ... B ...

  8. 基于领域驱动设计(DDD)超轻量级快速开发架构(二)动态linq查询的实现方式

    -之动态查询,查询逻辑封装复用 基于领域驱动设计(DDD)超轻量级快速开发架构详细介绍请看 https://www.cnblogs.com/neozhu/p/13174234.html 需求 配合Ea ...

  9. java基础——并发1

    一.并发的定义 并发:对于这个概念一直就是没怎么搞懂,就是感觉特别的生疏,(自己从从字面上理解就是多个东西,一起出发),所以就上网上查了一些资料: 同时拥有两个或多个线程,如果程序在单核处理器上运行, ...

  10. 02 . Kubeadm部署Kubernetes及简单应用

    kubeadm部署Kubernetes kubeadm简介 # kubeadm是一位高中生的作品,他叫Lucas Kaldstrom,芬兰人,17岁用业余时间完成的一个社区项目: # kubeadm的 ...