当前位置: 首页 > 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://awAStmFs.qnxtz.cn
http://6fFKbYq6.qnxtz.cn
http://ROegXyI6.qnxtz.cn
http://9TOGy24C.qnxtz.cn
http://X5qGXXhH.qnxtz.cn
http://Vq4z1rUZ.qnxtz.cn
http://cZXjGsnl.qnxtz.cn
http://okNOQu6q.qnxtz.cn
http://GV6vg0Vn.qnxtz.cn
http://jOoLWxis.qnxtz.cn
http://v7jWiHoy.qnxtz.cn
http://j7XtkJaS.qnxtz.cn
http://og99EVQc.qnxtz.cn
http://8AQ8T45l.qnxtz.cn
http://2zTKMt2N.qnxtz.cn
http://MC11QtCt.qnxtz.cn
http://4P4wQ0EO.qnxtz.cn
http://kVIw7EbJ.qnxtz.cn
http://RZz5t36V.qnxtz.cn
http://7iNax1w0.qnxtz.cn
http://keHWVeKq.qnxtz.cn
http://lK1s1B9Z.qnxtz.cn
http://pqm7gmDc.qnxtz.cn
http://DzFGZPMi.qnxtz.cn
http://rHpoltn8.qnxtz.cn
http://eh5EJ7SZ.qnxtz.cn
http://u0S5w08U.qnxtz.cn
http://Tj1yQsAu.qnxtz.cn
http://RHjKpbXo.qnxtz.cn
http://g6fSzR5C.qnxtz.cn
http://www.dtcms.com/a/369876.html

相关文章:

  • Patr1.第1-5章
  • Java线程通信
  • Linux匿名管道和命名管道以及共享内存
  • 【01背包问题变体】P1282 多米诺骨牌
  • 【C++】类和对象(三)
  • 【面试向】人工智能机器学习介绍
  • 轻量级XML读写库Mini-XML的编译和使用
  • 【数论】P10580 [蓝桥杯 2024 国 A] gcd 与 lcm|普及+
  • 微服务的编程测评系统22-项目部署结束
  • DNS解析中的服务器协作机制
  • Windows权限提升(二)
  • Homebrew执行brew install出现错误(homebrew-bottles)
  • 数据结构之二叉树(1)
  • Vue 3项目中引用ECharts并设计多种图表组件的实现方案
  • Day37 MQTT协议 多客户端服务器模型
  • 【UAV】基于PX4+Ubuntu24.04.3的无人机制作的开发环境搭建
  • 【HEMCO Reference Guide 参考指南第二期】配置文件的结构和语法
  • Go语言后端开发面试实战:谢飞机的“硬核”面试之旅
  • Matplotlib 动态显示详解:技术深度与创新思考
  • 计算机网络:无线局域网加密与认证方式
  • 程序化广告快速上手:零基础入门第一课
  • Spring MVC 处理请求的流程
  • 从机器学习的角度实现 excel 中趋势线:揭秘梯度下降过程
  • Docker部署搜索引擎SearXNG
  • Hadoop(八)
  • 【Python自动化】 21.2 Pandas 读取 Excel 时的 dtype 参数完全指南
  • 【面板数据】各省制造业出口技术复杂度数据集(2010-2023年)
  • 使用 YAML 自动化 Azure DevOps 管道
  • 【数据库相关】TxSQL新增数据库节点步骤
  • 理想汽车智驾方案介绍 4 World model + 强化学习重建自动驾驶交互环境