学会了Python,感觉自己膨胀了许多——ch3 基本数据结构(未更新完毕)

本文详细介绍了Python中的基本数据结构——列表,包括创建、访问、range函数创建、高级操作如乘法、加法、索引、计数、删除、排序等。还提到了列表的拷贝和深浅拷贝的区别,以及列表元素的添加、删除方法。此外,还讨论了列表的反转和排序功能。
摘要由CSDN通过智能技术生成

个人笔记,同时也记录着本人的学习轨迹~ 附有目录便于查阅碎片知识
如果什么不足之处也欢迎大家来指正
更多系列欢迎大家戳主页去阅读~

完整Python学习戳这里~~~
完整Python学习戳这里~~~
完整Python学习戳这里~~~


三、基本数据结构

在程序设计中,我们总会将数据对象用一些容器装起来,这种数据对象本身的组织方式就是数据结构。

1.列表list

列表就像是一个篮子,这个篮子里面可以放各种各样的东西,用中括号[]表示

(1)列表的创建、访问

'''基本格式:
变量 = [变量1,变量2,变量3,.....]
里面的变量可以是任何数据类型的个体元素,也可以是一个列表/元组等数据结构
列表的元素可以直接通过下角标来访问
'''# 实例如下:
a = [1,2.0,'嘿嘿!']
print(a) # 结果为[1, 2.0, '嘿嘿!']
print(a[2]) # 结果为嘿嘿!
print(a[-1]) # 负数依旧是从最后开始逆序访问(结果为嘿嘿!)

由于列表里的元素可以是数据结构,因此我们可以在某列表里面进行嵌套形成多维列表(访问方式依旧是通过下角标)

fruit = ['香蕉','菠萝','哈密瓜','橙子']
food = ['米饭','面条',fruit,'包子']
print(food[2]) # 输出整个列表 ['香蕉', '菠萝', '哈密瓜', '橙子']
print(food[2][1]) # 输出fruit列表的第2个元素 菠萝

列表也可以进行切片访问

a = [1,2,3,4,5,8,9,10]
list1 = a[:5] # [1, 2, 3, 4, 5] 从a[0]到a[5-1]形成的列表
list2 = a[2:] # [3, 4, 5, 8, 9, 10] 从a[2]到末尾形成的列表
list3 = a[2:5] # [3, 4, 5] 从a[2]到a[5-1]形成的列表
list4 = a[2:7:3] # [3, 8] 从a[2]到a[7-1]每加3取一个数组成列表(a[2] a[5])

(2)range函数创建列表

range函数的语法有三种,分别是1个、2个、3个参数

a1 = range(5) # a1=[0,1,2,3,4]
a2 = range(1,5) # a2=[1,2,3,4]
a3 = range(1,20,4) # a3=[1,5,9,13,17]
'''三个参数一定要是整数!!如果range范围内没有元素就是生成空列表'''

我们在前面for循环了解过range,所以range函数的本质是生成一个列表,for循环in range依旧是在生成的这个列表里循环。

Python3中严格说直接用range生成的变量并不是真正的列表,我们仍需进行一下类型转换才能生成真正的列表。(实例如下)

a = range(1,10,2)
print(a,type(a)) # 输出 range(1, 10, 2) <class 'range'>
print(a[1]) # 输出 3
b = list(a) # 进行一个格式的强制转换
print(b,type(b)) # [1, 3, 5, 7, 9] <class 'list'>

range类型的假列表我们依旧可以通过下角标来访问元素值,只是在输出整个列表时它的可读性比较差(比较上面的a和b)。

(3)列表的高级操作

学过C++的人会知道C++里有STL标准库里面存储了与C有关许多的数据结构还有相关的函数操作,在Python数据结构中,我们对应的数据结构也会有一些高级操作,是通过函数来实现的。
1.运算符运算
乘法加法等于不等于是列表常用的运算符

a = [1,2,3,4,5,8,9,10]
b = ['香蕉','菠萝','哈密瓜']
list1 = a*4 # 乘法代表列表a重复4遍 [1, 2, 8, 9, 10, 1, 2, 8, 9, 10, 1, 2, 8, 9, 10, 1, 2, 8, 9, 10]
list2 = a+b # 加法代表列表拼接 [1, 2, 8, 9, 10, '香蕉', '菠萝', '哈密瓜']
bool1 = a==b # 如果两个列表相等,返回True;否则返回False
bool2 = a!=b # 如果两个列表不等,返回True;否则返回False

2.查询列表某些属性
列表长度取某元素的下标某元素出现次数是列表常用的属性,如果列表里面全部是浮点数和整型数,还可以研究最大值最小值

a = [1,2,8,11.2,9,10,2]
b = ['香蕉','菠萝','哈密瓜']
num1 = len(a) # 返回值为a的长度 7
num2 = a.index(2) # 返回值为元素2出现的第一个下标 1
num3 = a.count(2) # 返回值为元素2出现的次数 2
Max = max(a) # 返回最大值 11.2
Min = min(a) # 返回最小值 1

3.改变列表自身的操作
(1)列表元素添加
append——将某元素传到列表最后
extend——将某容器里所有的元素传到列表最后
(这个容器可以是列表、range、元组、字典等任意有元素的数据结构)
insert——将某元素添加到列表的某一处位置(传入一个角标的参数)

a = [1,2,3,4,5,6]
x = [8,9]
d = b = c = a # 拷贝一下列表a
a.append(99) # 添加99这一个元素
print(a)
b.append(x) # 把x这个列表当成一个元素添加到尾部
print(b)
c.extend(x) # 把x里面所有的元素按序添加到尾部
print(c)
d.insert(1,'我是单词')
print(d)

运行结果:
[1, 2, 3, 4, 5, 6, 99]
[1, 2, 3, 4, 5, 6, 99, [8, 9]]
[1, 2, 3, 4, 5, 6, 99, [8, 9], 8, 9]
[1, ‘我是单词’, 2, 3, 4, 5, 6, 99, [8, 9], 8, 9]
仔细看看,有什么疑问?
提示:b c和d各只调用了一次函数

程序第三行有一个拷贝的操作,因为这时候实际上abcd四个列表是同时改变数值的(比如在b里面添加了[8,9]这个元素,在a和c里同样也添加了)
这个是列表的拷贝操作类似于C语言的指针。
(2)列表元素删除
del()——删除变量最常用的方法
pop()——返回列表选定index的元素值并删除该元素
remove(某)——删除首次出现的某元素

a = [1,2,5,4,3,8,4]
del a[1] # 将a[1]这一个元素删除
del a # 将整个列表a删除
a = [1,2,5,4,3,8,4]
a.remove(4) # 将第一个元素4移出
print(a) # [1, 2, 5, 3, 8, 4]
print(a.pop(1),a,sep='与') 
# 返回a[1]的数值,并且将a[1]删除 2与[1, 5, 3, 8, 4]
print(a.pop()) # 不传入参量就是返回最后一个的数值,并且将最后一个元素删除

(3)排序和翻转
reverse——将整个列表翻转
sort——排序函数(无参数时为从小到大)

a = [5,5.4,3,1,22,4,6]
a.reverse() # 将a翻转,a变成[6, 4, 22, 1, 3, 5.4, 5]
a.sort() # 将a内元素从小到大排序 [1, 3, 4, 5, 5.4, 6, 22]

上面的sort函数是从小到大排序,我们可以传入一些控制的参数,让其变成从大到小排序——sort函数里面有一个参数为reverse默认值为False。

a = [5,5.4,3,1,22,4,6]
a.sort(reverse=True) # 告诉程序排序时进行翻转(这里是参数不是那个reverse函数)
print(a) # [22, 6, 5.4, 5, 4, 3, 1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值