Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素,可以保存多个数据,而且允许有重复数据。
在Python中,可以使用[]字面量语法来定义列表,列表中的多个元素用逗号进行分隔。列表支持嵌套,但是在创建列表嵌套时,不能用[[0] * 3] * 5]类似方式来创建嵌套列表。比如我们需要创建一个5*3的列表,应该 [[0] * 3 for _ in range(5)]这么创建。
list1 = ["z7sz", "blog", 100, ["top", "python", 88]] #创建一个5*3的列表嵌套 scores1 = [[0] * 3] * 5 print(scores1) # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] scores2 = [[0] * 3 for _ in range(5)] print(scores2) # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] #上面两种创建出来的列表嵌套看起来好像是一样的,但是当我们赋值时 scores1[0][0] = 'test' print(scores1) #[['test', 0, 0], ['test', 0, 0], ['test', 0, 0], ['test', 0, 0], ['test', 0, 0]] scores2[0][0] = 'test' print(scores2) #[['test', 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
很明显,第一种创建嵌套列表的方法是错误的。第二种方法的创建方式叫做列表推导式,在下面会讲到。
我们也可以通过Python内置的list函数将其他序列变成列表。
list1 = list(range(1,100))
list2 = list('z7sz') #['z', '7', 's', 'z']
列表是一种可变数据类型,也就是说列表可以添加元素、删除元素、更新元素,这一点跟字符串是不同的。我们后面也会出一篇来讲讲可变和不可变类型的区别。
二、列表的使用 1、列表的运算符和字符串类型一样,列表也支持拼接、重复、成员运算、索引和切片以及比较运算。
items1 = [35, 12, 99, 68, 55, 87]
items2 = [45, 8, 29]
# 列表的拼接
items3 = items1 + items2
print(items3) # [35, 12, 99, 68, 55, 87, 45, 8, 29]
# 列表拼接也可以用extend进行拼接
items3.extend(items1)
print(items3) #[35, 12, 99, 68, 55, 87, 45, 8, 29, 35, 12, 99, 68, 55, 87]
# 列表的重复
items4 = ['hello'] * 3
print(items4) # ['hello', 'hello', 'hello']
# 列表的成员运算
print(100 in items3) # False
print('hello' in items4) # True
# 获取列表的长度(元素个数)
size = len(items3)
print(size) # 9
# 列表的索引
print(items3[0], items3[-size]) # 35 35
items3[-1] = 100
print(items3[size - 1], items3[-1]) # 100 100
# 列表的切片
print(items3[:5]) # [35, 12, 99, 68, 55]
print(items3[4:]) # [55, 87, 45, 8, 100]
print(items3[-5:-7:-1]) # [55, 68]
print(items3[::-2]) # [100, 45, 55, 99, 35]
# 列表的比较运算
items5 = [1, 2, 3, 4]
items6 = list(range(1, 5))
# 两个列表比较相等性比的是对应索引位置上的元素是否相等
print(items5 == items6) # True
items7 = [3, 2, 1]
# 两个列表比较大小比的是对应索引位置上的元素的大小
print(items5 <= items7) # True
由于列表是可变类型,所以通过索引操作既可以获取列表中的元素,也可以更新列表中的元素。
2、列表的遍历如果想逐个取出列表中的元素,可以使用for循环的。
items = ['Python', 'Java', 'Go', 'Kotlin']
for item in items:
print(item)
3、列表的方法
3.1、添加和删除
items = [10,12,14,16,'z7sz','blog']
# 使用append方法在列表尾部添加元素
items.append('top')
print(items) #[10, 12, 14, 16, 'z7sz', 'blog', 'top']
# 使用insert方法在列表指定索引位置插入元素
items.insert(1, 'python')
print(items) #[10, 'python', 12, 14, 16, 'z7sz', 'blog', 'top']
# 删除指定的元素
items.remove('python')
print(items) #[10, 12, 14, 16, 'z7sz', 'blog', 'top']
# 删除指定索引位置的元素
items.pop(0)
print(items) #[12, 14, 16, 'z7sz', 'blog', 'top']
#使用del关键字删除元素
del items[0]
print(items) #[14, 16, 'z7sz', 'blog', 'top']
# 清空列表中的元素
items.clear()
print(items) #[]
remove方法删除元素时,当元素不在列表中,会报错。使用pop删除元素时,当索引超出范围,也会报错。
3.2、寻找和统计列表类型的index方法可以查找某个元素在列表中的索引位置;因为列表中允许有重复的元素,所以列表类型提供了count方法来统计一个元素在列表中出现的次数。
items = ['blog',10,12,14,16,'z7sz','blog']
# 查找元素的索引位置,后面的数字表示从哪里开始寻找,如果在列表中寻找不到,会报错
print(items.index('blog')) #0
print(items.index('blog',2)) #6
# 查找元素出现的次数
print(items.count('blog')) #2
print(items.count('python')) #0
3.3、元素的排序和反转
列表的sort操作可以实现列表元素的排序,而reverse操作可以实现元素的反转,这两个方法要求列表中的元素是同一类型。
items = [10,12,14,16,9,1,4,5] # 排序 items.sort() print(items) #[1, 4, 5, 9, 10, 12, 14, 16] # 反转 items.reverse() print(items) #[16, 14, 12, 10, 9, 5, 4, 1]3.4、列表推导式
在Python中,列表还可以通过一种特殊的字面量语法来创建,这种语法叫做生成式。
# 创建一个由1到9的数字构成的列表 items1 = [x for x in range(1, 10)]
列表推导式生成列表跟普通的for循环+append生成列表相比,列表推导式拥有更好的性能。
我的博客:https://blog.z7sz.top



