第3章 Python的数据结构、函数和⽂件

本文介绍了Python中的数据结构,重点讲解了元组和列表的特性与操作,如元组的不可变性、列表的可变性、添加删除元素的方法,以及切片、序列函数等。同时,提到了字典的创建和操作,如更新、删除键值对。这些基础知识对于Python编程至关重要。
摘要由CSDN通过智能技术生成

3.1 数据结构和序列

元组

元组是⼀个固定⻓度,不可改变的Python序列对象。创建元组的最简单⽅式,是⽤逗号分隔⼀列值:如下运行结果(1, 2, 3)     (1, 2, (3, 4), 5)

tup = 1,2,3
tup
tup1 = 1,2,(3,4),5
tup1

当⽤复杂的表达式定义元组,最好将值放到圆括号内,如上第二个所示.

⽤tuple可以将任意序列或迭代器转换成元组,运行结果:(4,0,2)

tuple([4,0,2])

元组中存储的对象可能是可变对象。⼀旦创建了元组,元组中的对象就不能修改了:以下报错

tup = tuple(['foo',	[1,	2],	True])
tup[2]= False

如果元组中的某个对象是可变的,⽐如列表,可以在原位进⾏修改,运行结果:[1, 2, [3, 4, 5]]

tup=[1,2,[3,4]]
tup[2].append(5)
tup

可以⽤加号运算符将元组串联起来,运行结果:(4, 0, 2, 2, 3)

tuple([4,0,2])+(2,3)

元组乘以⼀个整数,像列表⼀样,会将⼏个元组的复制串联起来,运行结果:(1, 2, 3, 1, 2, 3)

tup = 1,2,3
tup*2

元组拆分:直接以赋值的方式进行

tuple⽅法:因为元组的⼤小和内容不能修改,它的实例⽅法都很轻量。其中 ⼀个很有⽤的就是count(也适⽤于列表),它可以统计某个值出现的频率。

列表

与元组对⽐,列表的⻓度可变、内容可以被修改。你可以⽤⽅括号定义,或⽤list函数。

list函数常⽤来在数据处理中实体化迭代器或⽣成器:)(iter())

添加和删除元素,

list.append(obj):可以使用append()在列表末加元素;

list.insert(index, obj):insert可以在特定的位置插⼊元素;

list.pop([index=-1]),pop()移除指定位置的元素;

list.remove(obj):可以使用remove()移掉某个值。

in或not in判断某值是否在列表list里。

串联和组合列表

和元组一样可以使用加号“+”,将两个列表串联起来,但是耗时比较久,性能不佳,一般使⽤extend追加元素。x.extend(obj)

排序

sort做排序:对列表做排序,list_a.sort(key=len),使用列表元素的长度来排序

sorted函数?

二分搜索和维护已排序的列表

bisect模块是一个python的针对一个有序数组的插入和排序操作的一个模块。但不检查是否数组是否排好序,position=bisect.bisect(x,r),返回x列表中r排序的位置(默认在右)。

切片

⽤切边可以选取⼤多数序列类型的⼀部分,语法是obj[start_index:end_index:step],start_index、end_index是obj的下标,step是步调,默认是1,取值不包括end_index的值,一下输出[12, 14, 23].

list_l = [1, 23, 45, 12, 24, 14, 52, 3]
list_l.sort()
list_l[2:5:1]

一定要注意start_index,end_index,step的正负和大小,这块容易出错,从左往右取值,step必须为正,从右往左取值,step取值为负;

还要注意在连续切片时返回类型为list类型,而取单个元素时是其本身类型。   注意注意

序列函数

python中有一部分有序列的函数:

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中,返回该列表及对应下标:

li = [1, 3, 12, 14, 23, 23, 42, 45]
for i, value in enumerate(li):
    print(i, value)

sorted函数:sorted函数可以从任意序列的元素返回⼀个新的排好序的列表,sorted(iterable, cmp=None, key=None, reverse=False)。

zip函数:压缩和解压,压缩:zip可以将多个列表、元组或其它序列成对组合成⼀个元组列表,zip([iterable, ...]),还有解压,反向操作,将行

reversed函数:reversed 函数返回一个反转的迭代器。reversed(iterable)

字典

最重要的数据结构,字典别名是哈希映射或关联数组。它是键值对的大小可变集合,键和值都是 Python对象。

del关键字或pop⽅法:(返回值得同时删除键)删除值。

update⽅法是原地改变字典。

字典创建:⽤序列创建字典:输出结果:{'a': 1, 'b': 3, 'c': 12}

tp1 =(1, 3, 12)
tp2 =("a","b","c")
mapping=dict(zip(tp2,tp1))
mapping

还有一种方法创建字典:字典推导式(Dict Comprehension),与列表推导式类似。

cities=['oxford','beijing','tokyo','london']
countries=['uk','china','japan','uk']
d = {city:country for city,country in zip(cities,countries) if country=='uk'}
d

{'oxford': 'uk', 'london': 'uk'}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值