【Python】第五部分 列表
文章目录
5. 列表
5.1 列表的特点
- 列表是有序的
- 索引映射的是唯一的数据
- 列表可以存储重复的数据
- 可以混存不同的数据类型
- 根据需要动态的分配和回收内存
5.2 列表的创建
# 1. 直接写[]
# 2. list([])
arr = ['hello', 'world', 123, True]
arr2 = list(['hello', 'world', 456, True])
print(arr)
print(arr2)
print(arr[0])
print(arr2[3])
5.3 获取指定元素的索引
需要注意的是:
- 如果在列表中查找的元素内容有重复的,当它找到第一个的时候就会停止查找并且返回索引
- 如果查找不到元素内容则会报错
arr3 = list(['hello', 'world', 789, False, 'hello'])
print(arr3.index('hello')) # 0
# index(element,start,stop)可以再传入两个参数
# 第二个参数为要查找的起点,另一个为终点(不包含终点)
print(arr3.index('hello', 1, 5)) # 4
5.4 获取列表中指定的元素
正向索引 0 --> N-1
反向索引 -N --> -1
如果指定的索引不存在,则报错
arr4 = ['GG', 'Hello', 'Tree', 123, 456]
print(arr4[2]) # Tree
print(arr4[-3]) # Tree
5.5 获取多个元素(切片)
列表名[start:stop:step]
,注意:不包括(stop)
切片的结果是:对原列表的拷贝,产生一个新的列表
arr5 = ['GG', 'Hello', 'Tree', 123, 456]
list1 = arr5[1:3:1]
print(arr5, id(arr5)) # ['GG', 'Hello', 'Tree', 123, 456] 2583478125512
print(list1, id(list1)) # ['Hello', 'Tree'] 2583478125576
# 步长默认为 1
list1 = arr5[1:3:]
print(list1) # ['Hello', 'Tree']
# start默认为 0
list1 = arr5[:5:1]
print(list1) # ['GG', 'Hello', 'Tree', 123, 456]
# stop默认为 N
list1 = arr5[3::1]
print(list1) # [123, 456]
5.6 列表元素的判断和遍历
arr6 = [10, 20, 30, 40, 50, 60]
print(50 in arr6) # True
print(100 in arr6) # False
print(50 not in arr6) # False
for item in arr6:
print(item, end='\t')
print()
5.7 列表的添加操作
添加的方法:append( )、extend( )、insert( )、切片
# 1. append() 在原数组上进行修改,作用:在列表末尾添加元素
arr7 = [10, 20, 30, 40]
print(arr7, id(arr7)) # [10, 20, 30, 40] 1216782886472
arr7.append(60)
print(arr7, id(arr7)) # [10, 20, 30, 40, 60] 1216782886472
arr7.append(['hello', 'world'])
print(arr7) # 加入多个元素 : [10, 20, 30, 40, 60, ['hello', 'world']]
# 2. extend() 在原数组上进行修改,作用:在列表末尾添加元素
# extend()和append()的区别在于:当添加多个元素的时候,extend会进行拆包,然后添加到末尾
arr7.extend([234, 564])
print(arr7, id(arr7)) # [10, 20, 30, 40, 60, ['hello', 'world'], 234, 564] 1216782886472
# 3. insert() 在原数组上进行修改,作用:可以在任意位置添加一个元素
arr7.insert(2, 6666666)
print(arr7, id(arr7)) # [10, 20, 6666666, 30, 40, 60, ['hello', 'world'], 234, 564] 1216782886472
# 4. 切片 作用:添加多个元素,下面写法是原数组上进行切片,这里要注意和之前讲过的切片写法区分开
arr7[3::] = [123, 456, 789]
print(arr7) # [10, 20, 6666666, 123, 456, 789] 1216782886472
5.8 列表的删除操作
删除的方法:remove()、pop()、切片、clear()、del
# 1. remove() 删除指定的元素,如果有重复的元素则只会删除第一个
arr8 = [10, 20, 30, 34, 56, 26, 30]
arr8.remove(30)
print(arr8) # [10, 20, 34, 56, 26, 30]
# 2. pop() 根据索引删除指定的元素
arr8.pop(2)
print(arr8) # [10, 20, 56, 26, 30]
# 如果不指定参数则默认删除列表中的最后一个元素
arr8.pop()
print(arr8) # [10, 20, 56, 26]
# 3. 切片
# 删除至少一个元素,将产生一个新的列表
list3 = arr8[1:3:1]
print(arr8, id(arr8)) # [10, 20, 56, 26] 1314499684872
print(list3, id(list3)) # [20, 56] 1314499684744
# 删除至少一个元素,不产生新的列表,而是删除原数组
# 将所选中的部分替换为空列表
arr8[1:3:1] = []
print(arr8, id(arr8)) # [10, 26] 1314499684872
# 4. clear 清除所有的列表
arr8.clear()
print(arr8) # []
# 5. del 删除列表
del arr8
5.9 列表的修改操作
arr9 = [10, 20, 234, 546, 454, 5313, 2]
arr9[2] = 6666
print(arr9) # [10, 20, 6666, 546, 454, 5313, 2]
arr9[1:3:1] = [456, 56, 22, 3, 2]
print(arr9) # [10, 456, 56, 22, 3, 2, 546, 454, 5313, 2]
5.10 列表排序
# sort() 默认升序排列
arr10 = [456, 4652, 3, 243, 5, 45, 324, 54, 234]
arr10.sort()
print(arr10) # [3, 5, 45, 54, 234, 243, 324, 456, 4652]
arr10.sort(reverse=True) # 降序排列
print(arr10) # [4652, 456, 324, 243, 234, 54, 45, 5, 3]
# sorted() 和sort的区别是会产生一个新的列表,对原数组不改变
new_arr10 = sorted(arr10)
print(new_arr10) # [3, 5, 45, 54, 234, 243, 324, 456, 4652]
new_arr10 = sorted(arr10, reverse=True)
print(new_arr10) # [4652, 456, 324, 243, 234, 54, 45, 5, 3]
5.11 列表生成式
# 列表名 = [i for i in list]
# 第一个i表示的是列表元素的表达式,也是最后存储在列表中的值
lis1 = [i for i in range(1, 11)]
print(lis1) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
lis2 = [i * i for i in range(1, 11)]
print(lis2) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
总结
以上就是今天要讲的内容,希望对大家有所帮助!!!