目录
列表
1、创建列表
2、输出列表
3、列表切片
4、改变列表
增
删
改
查
5、四则运算
6、嵌套列表
7、列表推导式
Python中的列表可以C中数组类比,但列表中存放不同的数据类型,创建如下:
name = [1, 2, 3, 4, "lwy"]
列表名,方括号,用英文逗号隔开每个元素
print(name)
# 打印所有元素
print(name[3])
# 打印第四个元素
用法与C相似
可直接输出一定序号范围内的列表对象,之间使用冒号,如下:
print(name[1:3])
# 打印第2到第3-1号元素
可指定跨度,即再使用一个冒号,如下:
print(name[0:5:2])
# 打印第0、2、4号元素
从头或到尾可省略,如下:
print(name[:])
# 打印所有元素
最灵活的地方在于,列表的排序存在负序,即结尾为-1,倒数第二为-2,由此,倒序输出就变得极为简单,如下:
print(name[-1])
# 输出最后一位
print(name[::-1])
# 倒序输出
优雅的精髓在于简单
name.append("lxy")
# 在结尾增加“lxy”
name.extend(5, 6, 7)
# 在结尾增加一组数据
特别的,可以使用切片的原理增加数据
name[len(name):] = [5, 6, 7]
在指定位置添加可使用insert,两个参数分别为插入位置,插入数据
name.insert(1, "lxy")
# 在序号为1的位置插入“lxy”
使用remove可删除列表中的某个特定数据
name.remove(1)
# 删除列表出现的第一个1
删除某个位置上的数据可使用pop,参数为序号
name.pop(1)
# 删除序号为1的数据
清空列表可使用clear
name.clear()
# 此时列表为空
可直接通过索引进行修改
name[0] = "lxy"
可直接利用切片修改
name[1:3] = [1, 2]
# 将序号为1~2的数据改为1和2
name[1:] = [2, 3, 4, 5]
# 将序号1后的数据改为2,3,4,5
sort可将数字列表从小到大排序
number = [1, 3, 5, 6, 3, 9]
number.sort()
print(number)
在sort的基础上可使用reverse倒序,reverse表示首与尾交换,第二和倒二交换,以此类推
number = [1, 3, 5, 6, 3, 9]
number.sort()
number.reverse()
print(number)
sort函数中可用参数一步到位实现倒序
number = [1, 3, 5, 6, 3, 9]
number.sort(reverse = True)
print(number)
count可统计列表中某数据出现的次数,参数为数据值
number = [1, 3, 5, 6, 3, 9]
print(number.count(3))
index可查找数据对应的索引
number = [1, 3, 5, 6, 3, 9]
print(number.index(1))
利用index就可在已知数据值得情况下改变该数据
number = [1, 3, 5, 6, 3, 9]
number[number.index(1)] = 2
print(number)
index的原型为index(x, star, end)从star到end-1中查找x的索引
可使用copy复制列表
name = ["lwy", "love", "lxy"]
name_1 = name.copy()
print(name_1)
当然,切片是非常强大的,同样可以用切片的原理复制列表
name = ["lwy", "love", "lxy"]
name_1 = name[:]
print(name_1)
加法表示拼接,乘法表示复制
A = [1, 2, 3]
B = [4, 5, 6]
C = A + B
print(C)
A *= 3
print(A)
与C中二维数组相似,具有相似的使用方法
matrix = [[1, 2, 3],[4, 5, 6], [7, 8, 9]]
matrix[0][0]
# 表示第一个列表中的第一个元素
可使用嵌套循环来输出嵌套列表
for i in matrix:
for each in i:
print(each, end=" ")
print()
嵌套列表的赋值如下,先定义一个一维列表,再将一维列表中的每个元素强塞成列表
A = [0] * 3
for i in range(3):
A[i] = [0] * 3
print(A)
注意嵌套列表的拷贝问题:即区分浅拷贝和深拷贝,通过copy库可实现深拷贝
语法为:[expression for target in iterable]
可以理解为是列表中元素的通式,新列表中的元素取决于expression
nums = [1, 2, 3, 4, 5]
nums = [i * 2 for i in nums]
print(nums)
nums = [i * 2 for i in range(1, 6)]
print(nums)
nums = [i for i in "lwy love lxy"]
print(nums)
在嵌套列表中列表推导式大显神通
nums = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
x = [row[1] for row in nums]
print(x)
即提取第二竖行,也可实现对角,如下:
nums = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
x = [nums[i][i] for i in range(len(nums))]
print(x)
关键在于理解好[expression for target in iterable]的语法逻辑
进阶语法:[expression for target in iterable if condition]
nums = [i for i in range(5) if i % 2 == 0]
print(nums)
# nums = [0, 2, 4]
nums = [i + 1 for i in range(5) if i % 2 == 0]
print(nums)
# nums = [1, 3, 5]
此时得到的nums中只含偶数
特别注意:执行顺序为 for i in range(5) → if i % 2 == 0 → i