简述Python中常见的数据结构

「数仓宝贝库」,带你学数据!

**导读:**Python中常见的数据结构有列表(list)、元组(tuple)、集合(set)、字典(dict)等,这些数据结构表示了自身在Python中的存在形式,在Python中可以输入type(对象)查看数据类型。

1

列表

(1)创建列表

列表是Python内置的一种数据类型,它是一种有序的数据集合,是用于存储一连串元素的容器。列表用[]来表示,列表中的每个元素可以相同也可以不相同。

1In [1]: list1 = ['wellcom','to','the','sjwjyaisf1688'] 2 3In [2]: list1 4Out[2]: ['wellcom', 'to', 'the', 'sjwjyaisf1688'] 5 6In [3]: list2 = ['wellcom','to','the','sjwjyaisf1688',6,6,6] 7 8In [4]: list2 9Out[4]: ['wellcom', 'to', 'the', 'sjwjyaisf1688', 6, 6, 6]

除了可以使用“[]”创建列表外,还可以使用list()函数创建列表:

1In [5]: list(['xiao','xiao','wa','jue','ji',666] 2Out[5]: ['xiao', 'xiao', 'wa', 'jue', 'ji', 666] 3 4In [6]: list('666') 5Out[6]: ['6', '6', '6']

列表支持加法操作,即将两个或多个列表合并为一个列表,具体操作如下:

1In [7]: ['wellcom','to','te']+['xiao','xiao','ji','666'] 2Out[7]: ['wellcom', 'to', 'te', 'xiao', 'xiao', 'ji', '666']

(2)列表的方法

Python中的列表对象本身内置了一些方法,这里主要介绍常用的append方法和extend方法。

append方法表示在现有列表的最后添加一个元素,一般在Python的循环控制语句中使用较多,具体示例如下:

1In [8]: list2 = ['a','b','c'] 2 3In [9]: list2.append('d') 4 5In [10]: list2 6Out[10]: ['a', 'b', 'c', 'd'] 7 8In [11]: list3 = ['e','f'] 9 10In [12]: list2+list3 11Out[12]: ['a', 'b', 'c', 'd', 'e', 'f']

append方法每次只能在当前列表的最后添加一个元素,而extend方法可以同时在当前列表的最后添加多个元素,类似于列表的加法(“+”)操作,表示将两个列表合并为一个列表。

1In [11]: list2 = [0,1,2] 2 3In [12]: list2.extend([3,4,5]) 4 5In [13]: list2 6Out[13]: [0, 1, 2, 3, 4, 5]

2

元组

元组与列表类似,区别在于列表中的元素可以修改,而元组中的元素只能读取,不可更改。

(1)创建元组

创建元组的代码示例如下:

1In [14]: tuple1=1,2,3 2 3In [15]: tuple2="sjwjyaisf1688","xiaoxiaowajueji666" 4 5In [16]: tuple3=(1,2,3,4) 6 7In [17]: tuple4=() 8 9In [18]: tuple5=(1,) 10 11In [19]: print(tuple1,tuple2,tuple3,tuple4,tuple5) 12(1, 2, 3) ('sjwjyaisf1688', 'xiaoxiaowajueji666') (1, 2, 3, 4) () (1,)

从上面的结果我们可以简单地总结出创建元组的几个要点:

  • 逗号分隔元组中的值,元组自动创建完成;

  • 元组大多数时候是被括号包围起来的;

  • 可以创建一个空元组,空元组外层只有一对括号;

  • 只含一个值的元组,必须在元组中加个逗号(,)。

与列表类似,元组也支持加法操作,即将两个或多个元组合并为一个元组。

1In [20]: (1,2,3)+(4,5,6) 2Out[20]: (1, 2, 3, 4, 5, 6)

(2)元组赋值

需要注意的是,列表可以进行赋值操作,而元组则不可进行赋值操作。具体示例如下:

1In [21]: list2[1]='a' 2 3 4In [22]: list2 5Out[22]: [0, 'a', 2, 3, 4, 5] 6 7 8In [23]: tuple1[1] = 'a' 9--------------------------------------------------------------------------- 10TypeError Traceback (most recent call last) 11<ipython-input-23-8b1c599ad6fe> in <module>() 12----> 1 tuple1[1] = 'a' 13 14 15TypeError: 'tuple' object does not support item assignment

可以看到,对列表进行赋值操作可以顺利完成,但试图对元组进行赋值操作则会报错,这也体现了元组中的元素不可更改的特点。

3

集合

在Python中,集合是一种特殊的数据结构,集合中的元素不能重复。可以通过列表、字典或字符串等数据结构来创建集合,也可以通过“{}”符号进行创建。在实际应用中,集合主要有两个功能,一是进行集合操作,二是消除重复元素。

1In [24]: drink = {'water','milk','lemonade','beer','sprite'} 2 3In [25]: drink 4Out[25]: {'beer', 'lemonade', 'milk', 'sprite', 'water'} 5 6In[26]:drink = set(['water','milk','lemonade','beer','sprite','milk']) 7 8In [27]: drink 9Out[27]: {'beer', 'lemonade', 'milk', 'sprite', 'water'} 10另外,Python支持数学上的集合运算,包括差集、交集、并集等,假设有两个集合AB11In [28]: A = {1,2,3,4,5,6} 12 13In [29]: B = {3,4,5}

下面分别举例说明。

1)求集合A与集合B的差集,即集合A的元素去除集合A、B共有部分的元素:

1In [30]: A-B 2Out[30]: {1, 2, 6}

2)求集合A与集合B的并集,即集合A与集合B的全部唯一元素(这里其实就是集合A中的所有元素):

1In [31]: A | B 2Out[31]: {1, 2, 3, 4, 5, 6}

3)求集合A与集合B的交集,即集合A与集合B的共有元素:

1In [32]: A & B 2Out[32]: {3, 4, 5}

**4
**

字典

字典与前面介绍的几种数据结构都不太相同,它是使用键–值(key-value)对的方式来进行存储的,具有方便快速查找的优点。与集合类似,字典也是使用符号“{}”括起来的,但其中的每个键–值对之间用冒号“:”进行对应。

1In[33]:dict1 = {'xiaoming':24,'xiaofang':28,'zhangsan':21,'wangwu':27} 2 3In [34]: dict1 4Out[34]: {'wangwu': 27, 'xiaofang': 28, 'xiaoming': 24, 'zhangsan': 21} 5字典本身是无序的,但可以分别通过keys和values方法获取字典中的键和值。 6In [35]: dict1.keys() 7Out[35]: dict_keys(['xiaoming', 'xiaofang', 'zhangsan', 'wangwu']) 8 9In [36]: dict1.values() 10Out[36]: dict_values([24, 28, 21, 27])

另外,字典还支持通过键来访问其对应的值:

1In [37]: dict1['xiaoming'] 2Out[37]: 24

需要注意的是,在定义字典时,键不能重复,否则重复的键值会默认替换原来的键值。

1In[38]:dict2={'xiaoming':24,'xiaofang':28,'zhangsan':21,'wangwu':27,'xiaoming':25} 2 3In [39]: dict2 4Out[39]: {'wangwu': 27, 'xiaofang': 28, 'xiaoming': 25, 'zhangsan': 21}

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。

本文转自 https://mp.weixin.qq.com/s/EA-mkc5qpXZO31SjqUfa0Q,如有侵权,请联系删除。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )