数据结构是计算机存储、组织数据的方式。序列是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]

python序列结构 python序列数据结构_列表生成式

如果要生成[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判断,例如筛选出偶数的平方:

python序列结构 python序列数据结构_二维_02

再如,把一个列表中的所有字符串变成小写形式:

python序列结构 python序列数据结构_列表生成式_03

当然,列表生成式也可以使用两层循环,例如生成"ABC"和"XYZ"中字母的全部组合:

python序列结构 python序列数据结构_Python_04

for循环其实可以同时使用两个甚至多个变量,例如字典(Dict)的items()可以同时迭代key和value:

python序列结构 python序列数据结构_Python_05

因此,列表生成式也可以使用两个变量来生成列表:

python序列结构 python序列数据结构_二维_06