Python官方教程 学习2 数据结构区分:list,tuple,set,dic

2018-10-31 02:12:56

数据结构

列表

在学习2种对字符串的方法运用做了总结,现在对列表的方法进行梳理:
由于列表的可变性,该操作是合法的。

添加

1、append():添加项不管是什么数据类型结构,都将会视为一个元素,位置在列表最后。
2、extend():添加项不管是什么数据类型结构,都将会视为系列元素,位置在列表最后。

插入

1、insert():偏移位置插入

删除

1、remove():删除出现指定的第一个元素
2、pop():删除指定的索引位置元素,缺省为-1,即为最后一个元素
3、clear():全部元素删除

查询

1、index():
2、count():元素出现的次数

排序

1、sort():
2、reverse():反转

copy

1、copy():复制

列表做堆栈,先进后出,append-pop
列表做队列,先进先出,append-popleft

列表的创建方式

squares = list(map(lambda x: x**2, range(10)))
squares = [x**2 for x in range(10)]
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

列表的嵌套

[[row[i] for row in matrix] for i in range(4)]	#	for循环输出的列表嵌套与外层的for循环输出列表
list(zip(*matrix))	

注意:这里有一个zip函数。
zip():下面是网上查找的用法,总结下:
1、将对象打包为由元组组成的列表:list[tuple(),tuple(),tuple(),tuple()…];
2、列表中的各个元组长度不一致时,以最短的为每个元组的长度;
3、zip的作用是将多个对应索引列表的元素组成一个单元元组,多个单元元组在组成zip的list
4、*zipped,将元组解压为列表。与zip是反向操作。

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致:将ac中对应索引的元素组成一个单元元组,多个单元元组在组成zip的list
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式 [a,b]
[(1, 2, 3), (4, 5, 6)]

del语句

del可以删除的对象可以是数据结构中的元素,也可以是数据结构本身。
pop只能删除数据结构中的元素,对数据结构本身的存在没有影响。

元组

元组元素可以查询和访问,索引可用,元素为有序序列。
赋值的时候,由逗号分隔,不一定有小括号,但是空元组一定要有小括号。交互模式输出元组的时候一定有小括号。元组不可变性,不能对元组本身进行增删改,这些操作的执行需要重新赋值变量。
上面的zip函数,侧面说明了元组的一个特征处理:解包与打包

t = 12345, 54321, "'hello!'1234554321'hello!'"
x, y, z = t
print(x)
12345

集合

下面对集合的相关特征进行描述:
1、集合无序,无法查询索引;
2、集合没有重复元素
3、创建空集合,需要set();
4、交互时输出的集合用的是{},这个不是说明这是字典,定义原因不清楚。只需要了解到字典是以键:值来作为元素的,与集合输出是不同的。
5、四则运算在集合上的体现可以这样理解:加(|):并集;减(-):差集;乘(&):交集;除(^):对称差异集合【这里的除,可以理解为并集除开交集的集合】

字典

字典是一种映射类型 。键:值 作为元素的序列
字典作为有序序列,可以访问,不过索引就是键
字典的可变性,说明可以进行增删改。
空字典是{};
检测键的存在可以使用in操作,根据返回的布尔量来判断。
dict():直接构造字典

循环技术

字典的循环遍历:items():可以遍历字典中的所有元素(键:值)。
序列(无分有序无序),enumerate(),均可以实现所有元素的遍历。
对于同时实现多个循环,除了for循环的嵌套,还可以使用zip。
排序的方面,有sort()和reverse()
对于序列的操作,不要在原来的变量上操作,新建操作最安全。

while & if

条件的设置:这些可以单独使用,也可以组合使用。
1、表达式 (注意这个==)
2、…in…
3、…not in…
4、…is…
5、…is not…
6、…and…
7、…or…
8、…not…

2018-10-23 15:57:35
Python中,初步接触,这几种结构,估计应该是运用很多,下面分别对他们进行分析:

Python中的数据类型有很多种:
1、数字:整型int,浮点型,复数,分数,各种进制数字;
2、字符串(可以索引,分片slice);
3、

数据结构 列表 元组 集合 字典
名称 list tuple set dic
结构符号 [ ] ( )有或无 set( ) { }
是否可变 可变 不可变 可变 可变
元素分隔符 , , , ,
元素类型相同 支持 支持 支持 键:值
元素类型不同 支持 支持
索引与切片 支持 支持 支持 支持
增 支持 不支持 支持 支持
删 支持 不支持 支持 支持
改 支持 不支持 支持 支持
查 支持 支持 支持 支持

注:索引有正索引(从0开始,从左到右)、负索引(从-1开始,从右到左)
注:运算符+一类,对于对象不同,实现也不同:对于数字而言是进行加法,对于字符串而言就是串联;
注:不可变:就是数字、字符串、元组中的元组在创建以后中间的单个元素就不能在更改,想要改变就必须使用其他元素与相同的变量名进行运算得到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值