当前位置: 首页 > news >正文

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代码至关重要。

http://www.xdnf.cn/news/1480321.html

相关文章:

  • 微服务的编程测评系统21-项目部署-mysql-nacos
  • Java线程通信
  • ChatGPT下的相关聊天提示词
  • 深度学习:残差网络ResNet与迁移学习
  • 【LeetCode热题100道笔记】二叉树的直径
  • 【杂类】Spring 自动装配原理
  • 基于多级特征编码器用于声学信号故障检测模型
  • 嵌入式学习日记
  • Linux系统编程—进程控制
  • 产品更新与路线图平台ShipShipShip
  • Java中的字符串
  • 提示词工程(Prompt Engineering)的崛起——为什么“会写Prompt”成了新技能?
  • Wisdom SSH 是一款创新性工具,通过集成 AI 助手,为服务器性能优化带来极大便利。
  • 【FastDDS】Layer Transport ( 04-TCP Transport )
  • 数据库中间件ShardingSphere v5.2.1
  • (算法 哈希表)【LeetCode 242】有效的字母异位词
  • 关于 React 19 的四种组件通信方法
  • 十三、计算机领域英语
  • TDengine 时间函数 WEEKOFYEAR() 用户手册
  • 【C++框架#3】Etcd 安装使用
  • Blender 3D建模工具学习笔记
  • LeetCode15:三数之和
  • 《MATLAB 批量把振动 CSV(含中文“序号/采样频率”)稳健转成 .mat:自动解析+统一换算+按 H/I/O/F-rpm-fs-load 命名》
  • WIN10+ubuntu22.04.05双系统装机教程
  • 基于STM32F103C8T6的心率与体温监测及报警显示系统设计
  • 如何在 FastAPI 中巧妙覆盖依赖注入并拦截第三方服务调用?
  • vue + ant-design-vue + vuedraggable 实现可视化表单设计器
  • 用 PHP 玩向量数据库:一个从小说网站开始的小尝试
  • 多维度数据统一线性处理的常见方案
  • 鸿蒙libxm2交叉编译