个人笔记,同时也记录着本人的学习轨迹~ 附有目录便于查阅碎片知识 如果什么不足之处也欢迎大家来指正 更多系列欢迎大家戳主页去阅读~
完整Python学习戳这里~~~ 完整Python学习戳这里~~~ 完整Python学习戳这里~~~
三、基本数据结构
在程序设计中,我们总会将数据对象用一些容器装起来,这种数据对象本身的组织方式就是数据结构。
1.列表list
列表就像是一个篮子,这个篮子里面可以放各种各样的东西,用中括号[]表示
(1)列表的创建、访问
'''基本格式:
变量 = [变量1,变量2,变量3,.....]
里面的变量可以是任何数据类型的个体元素,也可以是一个列表/元组等数据结构
列表的元素可以直接通过下角标来访问
'''
a = [1,2.0,'嘿嘿!']
print(a)
print(a[2])
print(a[-1])
由于列表里的元素可以是数据结构,因此我们可以在某列表里面进行嵌套形成多维列表(访问方式依旧是通过下角标)
fruit = ['香蕉','菠萝','哈密瓜','橙子']
food = ['米饭','面条',fruit,'包子']
print(food[2])
print(food[2][1])
列表也可以进行切片访问
a = [1,2,3,4,5,8,9,10]
list1 = a[:5]
list2 = a[2:]
list3 = a[2:5]
list4 = a[2:7:3]
(2)range函数创建列表
range函数的语法有三种,分别是1个、2个、3个参数
a1 = range(5)
a2 = range(1,5)
a3 = range(1,20,4)
'''三个参数一定要是整数!!如果range范围内没有元素就是生成空列表'''
我们在前面for循环了解过range,所以range函数的本质是生成一个列表,for循环in range依旧是在生成的这个列表里循环。
Python3中严格说直接用range生成的变量并不是真正的列表,我们仍需进行一下类型转换才能生成真正的列表。(实例如下)
a = range(1,10,2)
print(a,type(a))
print(a[1])
b = list(a)
print(b,type(b))
range类型的假列表我们依旧可以通过下角标来访问元素值,只是在输出整个列表时它的可读性比较差(比较上面的a和b)。
(3)列表的高级操作
学过C++的人会知道C++里有STL标准库里面存储了与C有关许多的数据结构还有相关的函数操作,在Python数据结构中,我们对应的数据结构也会有一些高级操作,是通过函数来实现的。 1.运算符运算 乘法、加法、等于、不等于是列表常用的运算符
a = [1,2,3,4,5,8,9,10]
b = ['香蕉','菠萝','哈密瓜']
list1 = a*4
list2 = a+b
bool1 = a==b
bool2 = a!=b
2.查询列表某些属性 列表长度、取某元素的下标、某元素出现次数是列表常用的属性,如果列表里面全部是浮点数和整型数,还可以研究最大值、最小值。
a = [1,2,8,11.2,9,10,2]
b = ['香蕉','菠萝','哈密瓜']
num1 = len(a)
num2 = a.index(2)
num3 = a.count(2)
Max = max(a)
Min = min(a)
3.改变列表自身的操作 (1)列表元素添加 append——将某元素传到列表最后 extend——将某容器里所有的元素传到列表最后 (这个容器可以是列表、range、元组、字典等任意有元素的数据结构) insert——将某元素添加到列表的某一处位置(传入一个角标的参数)
a = [1,2,3,4,5,6]
x = [8,9]
d = b = c = a
a.append(99)
print(a)
b.append(x)
print(b)
c.extend(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]
del a
a = [1,2,5,4,3,8,4]
a.remove(4)
print(a)
print(a.pop(1),a,sep='与')
print(a.pop())
(3)排序和翻转 reverse——将整个列表翻转 sort——排序函数(无参数时为从小到大)
a = [5,5.4,3,1,22,4,6]
a.reverse()
a.sort()
上面的sort函数是从小到大排序,我们可以传入一些控制的参数,让其变成从大到小排序——sort函数里面有一个参数为reverse默认值为False。
a = [5,5.4,3,1,22,4,6]
a.sort(reverse=True)
print(a)
|