数据结构(Data Structures)

本文详细介绍了Python的四种内置数据结构:列表、元组、字典和集合。列表是可变的有序集合,支持添加、删除和排序操作;元组与列表类似但不可变;字典是键值对的无序集合,常用于快速查找;集合是无序不重复元素的集合,支持集合操作。文中还提供了各种操作示例,包括向列表中添加元素、删除元组中的项、修改字典内容和集合的交集等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构(Data Structures)是用来存储一系列相关数据的集合。

Python中有四种内置的数据结构——列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。

                                                        四种内置数据结构主要区别一览表

                                                   列表                  元组                   字典                  集合

                      项目可变性              有                      无                       有                    有

                      项目有序性              有                      有                       有                    无

一、列表

       用于保存一系列有序项目的集合,项目的列表应该用方括号括起来,可以添加、移除、排序或者搜索列表中的项目,是一种可变的数据类型。可向列表中存储任何类型的对象,甚至是其它列表。

       若我们设置了一个列表名为list:list=['a','c','f','d','m']

                                                       若要向list中添加一个项目,则如:list.append('e')

                                                       若要向list中删除一个项目,则如:del list[0]#删除列表中第一个项目

                                                       若要对列表中的项目进行排序,则如:list.sort()#按照每个项目字母顺序排列

                                                       若要搜索列表中的项目,则如:list[2]#即搜索列表中第三个项目

二、元组

       用于将多个对象保存到一起,可以近似看做列表,但元组是不可变的,即不能编辑或更改元祖。元组是通过特定指定项目来定义的,在指定项目时,你可以给它们加上括号,并在括号内部用逗号分隔。元组可以包含子元组。

       若我们设置了一个元组名为zoo:zoo=('monkey','snail','snake','bird')

                                                         新元组包含旧元组,但并不改变旧元组:new_zoo='elephant','frog',zoo

                                                        搜索新元组的第二个对象: new_zoo[1]  

                                                        搜索新元组中的旧元组的第三个对象: new_zoo[2][2]

                                                        若要设置一个空元组,则如:empty()

                                                        若要设置一个只含一个项目的元组,则如:one(1,)#必须在第一个项目后加一个逗号

三、字典

       类似于一本地址薄,找到姓名,就能找到地址。姓名之于地址就像是键值(keys)之于值(value)。注意:在这里键值必须是唯一的;字典中的成对的键值-值配对不会以任何方式进行排序。

       字典的构成形式:name={key:value1,key2:value2}#若是key和value是字符串,要分别加引号。

       若我们设置了一个字典名为ab:ab={
                                                              'Swaroop':'swaroop@swaroopch.com',
                                                              'Larry':'larry@wall.org',
                                                              'Matsumoto':'matz@ruby-lang.org',

                                                              'Spammer':'spammer@hotmail.com'

                                                        }

                                                       若要删除一对键值-值配对,则如:del ab['Spammer']

                                                       若要添加一对键值-值配对,则如:ab['Guido']='guido@python.org'
                                                       若要访问字典中的每一对键值-值配对信息,并打印出来,则如:

                                                                                                 for name, address in ab.items():

                                                                                                       print('Contact {} at {}'.format(name,adress))

四、序列

       列表、元组和字符串都可以看做序列。序列的主要功能是资格测试和索引操作,允许直接获取序列中的特定项目。除了列表、元组和字符串,还有一种切片(Slicing)运算符。

      假设存在一个列表名为mylist:mylist=['a','b','c','d','e','f']

                                                    mylist[1:3]:则表示访问b和c

                                                    mylist[1:-1]:表示访问b,c,d,e(-1表示序列最后一个项目,-2表示序列中倒数第二个项目)

                                                    mylist[:]:表示访问全部

                                                    mylist[::2]:表示访问a、c和e#第三个数表示切片的步长

                                                    mylist[::-1]:表示访问f、e、d、c、b和a#当第三个数为负数时,第一个数默认为-1

五、集合

       是简单对象的无序集合。当集合中的项目存在与否比起次序或其出现次数更加重要时,我们就会使用集合。通过使用集合,可以测试某些对象的资格或情况,检查它们是否是其它集合的子集,找到两个集合的交集等等。

       假设存在一个集合名为bri:bri=set(['brazil','russia','india'])

                                                检查某个对象是否存在于集合:'brazil' in bri

                                                添加某个对象:bri.add('china')

                                                删除某个对象:bri.remove('russia')

                                                复制集合并重新命名:bric=bri.copy()

                                                b是否是a的的超集:b.issuperset(a)

                                                交集:bric&bri     或者    bri.intersection(bric)

六、有关字符串的更多内容:

       假设存在一个字符串名为name:name='Swaroop'

                                                        查找字符串是否以给定的字符串内容开头:name.startwith('Swa')

                                                        定位字符串中给定的子字符串的位置:name.find('war')#如果找不到war,会返回-1

                                                        联结序列中的项目:a为字符串,b为序列

                                                                                      a.join(b)#字符串将会作为每一项目间的分隔符


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值