数据结构是计算机存储、组织数据的方式。序列是Python中最基本的数据结构,序列中的每个元素都分配一个数字,即它的位置或索引,第一个索引是0,第二个索引是1,依此类推。序列都可以进行的操作包括索引、截取(切片)、加、乘、成员检查。此外,Python已经内置确定序列的长度以及确定最大和最小元素的方法。Pyhton内置序列类型最常见的是列表、元组和字符串。另外,Python提供了字典和集合这样的数据结构,他们属于无顺序的数据集合体,不能通过位置索引来访问数据元素。
列表
列表(List)是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表类似其他语言的数组,但功能比数组强大得多。
创建一个列表,只要把逗号分隔的不同数据项使用方括号括起来即可。
实例如下:
# -*- coding : utf-8 -*-
list1=['中国','美国',1997,2000]
list2=[1,2,3,4,5]
list3=["a","b","c","d"]
print(list1)
print(list2)
print(list3)
列表索引从0开始。列表可以进行截取(切片)、组合等。
1.访问列表中的值
使用下标索引来访问列表中的值,同样可以使用方括号的形式截取字符,实例如下:
# -*- coding : utf-8 -*-
list1=['中国','美国',1997,2000]
list2=[1,2,3,4,5,6,7]
list3=["a","b","c","d"]
print("list1[0]:",list1[0])
print("list2[1:5]:",list2[1:5])
输出结果:
list1[0]: 中国
list2[1:5]: [2, 3, 4, 5]
2.更新列表
可以对列表的数据项进行修改或更新,实例如下:
# -*- coding : utf-8 -*-
list=['中国','美国',1997,2000]
print("Value available at index 2 :")
print(list[2])
list[2]=2001
print("New value available at index 2 :")
print(list[2])
输出结果:
Value available at index 2 :
1997
New value available at index 2 :
2001
3.删除列表
方法一:使用del语句来删除列表中的元素,实例如下:
# -*- coding : utf-8 -*-
list=['中国','美国',1997,2000]
print(list)
del list[2]
print("删除后的列表值:")
print(list)
输出结果:
['中国', '美国', 1997, 2000]
删除后的列表值:
['中国', '美国', 2000]
方法二:使用remove()方法来删除列表中的元素,实例如下:
# -*- coding : utf-8 -*-
list=['中国','美国',1997,2000]
list.remove(1997)
list.remove('美国')
print(list)
输出结果:
['中国', 2000]
方法三:使用pop()方法来删除列表中指定位置的元素,无参数时删除最后一个元素,实例如下:
# -*- coding : utf-8 -*-
list=['中国','美国',1997,2000]
list.pop(2)
list.pop()
print(list)
输出结果:
['中国', '美国']
4.添加列表元素
可以使用append()方法在列表的末尾添加元素,实例如下:
# -*- coding : utf-8 -*-
list=['中国','美国',1997,2000]
list.append(2019)
print(list)
输出结果:
['中国', '美国', 1997, 2000, 2019]
定义多维列表
可以将多维列表视为列表的嵌套,即多维列表的元素值也是一个列表,只是维度比父列表小一。二维列表(即其他语言的二维数组)的元素值是一维列表,三维列表的元素值是二维列表。例如定义一个二维列表:
# -*- coding : utf-8 -*-
list2=[["CPU","内存"],["硬盘","声卡"]]
print(list2)
二维列表比一维列表多一个索引,可以如下获取元素:
列表名[索引1][索引2]
例如定义3行6列的二维列表,打印出元素值。
# -*- coding : utf-8 -*-
rows = 3
cols = 6
matrix=[[0 for col in range(cols)] for row in range(rows)]
for i in range(rows):
for j in range(cols):
matrix[i][j]=i*3+j
print(matrix[i][j],end=",")
print('\n')
输出结果:
0,1,2,3,4,5,
3,4,5,6,7,8,
6,7,8,9,10,11,
列表生成式(LIst Comprehensions)是Python内置的一种极其强大的生成列表的表达式。如果要生成一个List[1,2,3,4,5,6,7,8,9],可以用range(1,10):
list(range(1,10))
结果
[1, 2, 3, 4, 5, 6, 7, 8, 9]
如果要生成[1*1,2*2,3*3,......10*10],可以使用循环:
# -*- coding : utf-8 -*-
L=[]
for x in range(1,10):
L.append(x*x)
print(L)
输出结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
列表生成式的书写格式为把要生成的元素x*x放到前面,后面跟上for循环。这样就可以把列表创建出来。for循环后面还可以加上if判断,例如筛选出偶数的平方:
再如,把一个列表中的所有字符串变成小写形式:
当然,列表生成式也可以使用两层循环,例如生成"ABC"和"XYZ"中字母的全部组合:
for循环其实可以同时使用两个甚至多个变量,例如字典(Dict)的items()可以同时迭代key和value:
因此,列表生成式也可以使用两个变量来生成列表: