Python中list()使用详解及注意事项
python 中 list() 用法
列表(List)是Python中最基本、最常用的数据结构之一,用于存储有序的元素集合。下面我将详细介绍列表的使用方法、注意事项和实际案例。
1、基本用法
1.1、创建列表
''' 空列表 '''
empty_list = []
empty_list2 = list()
'''包含任意元素'''
numbers = [1, 9,2,3,4, 'string', False, True]
1.2、访问元素
fruits = ['apple', 'banana', 'orange', 'grape']
通过索引访问 ‘’
print(fruits[0]) # 'apple'
print(fruits[-1]) # 'grape' (负索引从末尾开始)
切片操作
print(fruits[1:3]) # ['banana', 'orange']
print(fruits[:2]) # ['apple', 'banana']
print(fruits[2:]) # ['orange', 'grape']
2、注意事项
2.1、python 中 list 是可变的
fruits = ['apple', 'banana', 'orange']
fruits[1] = 'pear' # 直接修改元素
print('=fruits==', fruits) # ['apple', 'pear', 'orange']
2.2、深拷贝 浅拷贝
list1 = [1,2.3,[4,5]]
list2 = ['1', 'a', 'b']
list3 = list1.copy()
list3[2][0] = '990' # 此时修改同样会修改 list1
print('===list3', list3) # [1, 2.3, ['990', 5]]
print('===list1', list1) # [1, 2.3, ['990', 5]]
深拷贝
import copy
list4 = copy.deepcopy(list1)
list4[2][1] = '00000' # 深拷贝 中不会修改 list1
print('---list4', list4) # [1, 2.3, ['990', '00000']]
print('---list1', list1) # [1, 2.3, ['990', 5]]
2.3、列表推导效率
传统写法
list5 = []
for i in range(10):list5.append(i**2) ## 每个数的2次方
print('==list5=', list5) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
高效写法
list6 = [i**2 for i in range(10)]
print('=list6==', list6)
2.4、、避免在循环中修改列表
list7 = [1,2,3,4,5,6,7]
# 错误处理方法for e, num in enumerate(list7):if num % 2 == 0:list7.pop(e)print('=list7==', list7) # [1, 3, 5, 7]
# 正确处理方式
# 获取list7 中不能被2整除的所有元素
list7 = [num for num in list7 if num % 2 != 0 ]
print('=list7==', list7) # [1, 3, 5, 7]
3、常用操作
# 添加元素fruits = ['apple', 'banana']
# 末尾添加fruits.append('orange')
# 指定位置插入
fruits.insert(1, 'grape')
# 合并列表
fruits.extend(['kiwi', 'mango'])
## 删除元素
fruits = ['apple', 'banana', 'orange', 'grape']
# 按值删除
fruits.remove('banana')
# 按索引删除
del fruits[0]
popped = fruits.pop(1) # 返回被删除的元素
# 清空列表
fruits.clear()
其它操作
numbers5 = [3, 1, 4, 1, 5, 9, 2]
# 排序
numbers5.sort() # 原地排序
sorted_numbers = sorted(numbers5) # 返回新列表
# 反转
numbers5.reverse()
# 查找索引
index = numbers5.index(4)
# 计数
count = numbers5.count(1)
4、案例
4.1、大于平均数的值
list8 = [23, 45, 12, 67, 34, 89, 56]
avg = sum(list8) / len(list8)above_avg = [num for num in list8 if num > avg]
print(f'平均值为:{avg},大于平均值的数为:{above_avg}') # 平均值为:46.57142857142857,大于平均值的数为:[67, 89, 56]
4.2 矩阵转换
# 创建3x3矩阵
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]# 转置矩阵
transposed = [[row[i] for row in matrix] for i in range(len(matrix[0]))]
print("转置矩阵:")
for row in transposed:print('--row-', row) # [1,4,7] , [2,5,8], [3,6,9]
7、性能考虑
时间复杂度:
索引访问: O(1)
追加元素: O(1)
插入/删除元素: O(n)
查找元素: O(n)
选择合适的数据结构:
频繁查找: 考虑使用集合(set)
或字典(dict)
频繁在两端操作: 考虑使用双端队列(deque)
元素唯一性要求: 使用集合(set)
列表是Python中功能强大且灵活的数据结构,理解其特性和正确使用方法对编写高效Python代码至关重要。