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

6.python列表

Python 列表 (List) 深度总结

文章目录

      • Python 列表 (List) 深度总结
        • 1. 列表的基本概念
        • 2. 访问列表中的元素
        • 3. 修改列表
        • 4. 删除列表元素
        • 5. 列表的操作符
        • 6. 列表的内置函数
        • 7. 列表的方法
        • 8. 列表的高级用法
          • 8.1 列表推导式 (List Comprehensions)
          • 8.2 列表的浅拷贝与深拷贝
          • 8.3 列表的性能优化
        • 9. 列表的多线程和并发处理
        • 10. 列表的国际化和本地化
      • 总结

列表是 Python 中最常用的数据结构之一,它是一个有序的、可变的集合,允许存储不同类型的元素。列表使用方括号 [] 来表示,并且可以通过索引和切片来访问、修改和操作其中的元素。

1. 列表的基本概念
  • 有序性:列表中的元素按照插入的顺序排列,每个元素都有一个唯一的索引。
  • 可变性:列表是可变的(mutable),意味着你可以在创建后修改、添加或删除其中的元素。
  • 异构性:列表可以包含不同类型的元素,如整数、字符串、浮点数、其他列表等。
# 创建列表
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5]
list3 = ["a", "b", "c", "d"]
2. 访问列表中的元素
  • 索引:使用方括号 [] 和索引值来访问单个元素。索引从 0 开始,负索引从 -1 开始表示从末尾开始计数。
  • 切片:使用 [start:end:step] 语法来获取子列表。start 是起始索引,end 是结束索引(不包括),step 是步长。
# 访问元素
print(list1[0])          # 输出: physics
print(list2[-1])         # 输出: 5
print(list2[1:5])        # 输出: [2, 3, 4, 5]
print(list2[::2])        # 输出: [1, 3, 5]
3. 修改列表
  • 更新元素:可以直接通过索引赋值来修改列表中的元素。
  • 添加元素
    • append():在列表末尾添加一个元素。
    • extend():将另一个序列(如列表、元组)中的所有元素添加到当前列表末尾。
    • insert(index, element):在指定位置插入一个元素。
# 更新元素
list1[2] = 2001
print(list1)             # 输出: ['physics', 'chemistry', 2001, 2000]# 添加元素
list1.append('math')
print(list1)             # 输出: ['physics', 'chemistry', 2001, 2000, 'math']list1.extend([2023, 'biology'])
print(list1)             # 输出: ['physics', 'chemistry', 2001, 2000, 'math', 2023, 'biology']list1.insert(1, 'biology')
print(list1)             # 输出: ['physics', 'biology', 'chemistry', 2001, 2000, 'math', 2023, 'biology']
4. 删除列表元素
  • del 语句:通过索引删除指定位置的元素。
  • pop() 方法:移除并返回指定位置的元素,默认移除最后一个元素。
  • remove() 方法:移除第一个匹配的元素。
# 删除元素
del list1[2]
print(list1)             # 输出: ['physics', 'biology', 2000, 'math', 2023, 'biology']popped_element = list1.pop()
print(popped_element)    # 输出: biology
print(list1)             # 输出: ['physics', 'biology', 2000, 'math', 2023]list1.remove('biology')
print(list1)             # 输出: ['physics', 2000, 'math', 2023]
5. 列表的操作符
  • +:用于连接两个列表。
  • *:用于重复列表。
  • innot in:用于检查某个元素是否存在于列表中。
  • for 循环:用于遍历列表中的元素。
# 列表操作符
list_a = [1, 2, 3]
list_b = [4, 5, 6]combined_list = list_a + list_b
print(combined_list)     # 输出: [1, 2, 3, 4, 5, 6]repeated_list = ['Hi!'] * 4
print(repeated_list)     # 输出: ['Hi!', 'Hi!', 'Hi!', 'Hi!']print(3 in list_a)       # 输出: True
print(7 not in list_a)   # 输出: Truefor item in list_a:print(item, end=' ') # 输出: 1 2 3
6. 列表的内置函数

Python 提供了一些内置函数来处理列表:

函数描述
len(list)返回列表的长度
max(list)返回列表中的最大值
min(list)返回列表中的最小值
sum(list)返回列表中所有元素的和(仅适用于数值列表)
sorted(list)返回一个新的排序后的列表,原列表不变
numbers = [3, 1, 4, 1, 5, 9]print(len(numbers))      # 输出: 6
print(max(numbers))      # 输出: 9
print(min(numbers))      # 输出: 1
print(sum(numbers))      # 输出: 23
print(sorted(numbers))   # 输出: [1, 1, 3, 4, 5, 9]
7. 列表的方法

Python 列表提供了许多内置方法,用于对列表进行各种操作:

方法描述
list.append(x)在列表末尾添加一个元素 x
list.extend(iterable)iterable 中的所有元素添加到列表末尾
list.insert(i, x)在索引 i 处插入元素 x
list.remove(x)移除列表中第一个等于 x 的元素
list.pop([i])移除并返回索引 i 处的元素,默认移除最后一个元素
list.clear()移除列表中的所有元素
list.index(x[, start[, end]])返回列表中第一个等于 x 的元素的索引,可选参数 startend 限制搜索范围
list.count(x)返回列表中等于 x 的元素的数量
list.sort(key=None, reverse=False)对列表进行原地排序,key 参数指定排序依据,reverse 参数指定是否降序
list.reverse()反转列表中的元素顺序
list.copy()返回列表的一个浅拷贝
# 列表方法示例
fruits = ['apple', 'banana', 'cherry']fruits.append('orange')
print(fruits)            # 输出: ['apple', 'banana', 'cherry', 'orange']fruits.extend(['grape', 'melon'])
print(fruits)            # 输出: ['apple', 'banana', 'cherry', 'orange', 'grape', 'melon']fruits.insert(1, 'pear')
print(fruits)            # 输出: ['apple', 'pear', 'banana', 'cherry', 'orange', 'grape', 'melon']fruits.remove('banana')
print(fruits)            # 输出: ['apple', 'pear', 'cherry', 'orange', 'grape', 'melon']popped_fruit = fruits.pop()
print(popped_fruit)      # 输出: melon
print(fruits)            # 输出: ['apple', 'pear', 'cherry', 'orange', 'grape']print(fruits.index('cherry'))  # 输出: 2print(fruits.count('apple'))   # 输出: 1fruits.sort()
print(fruits)            # 输出: ['apple', 'cherry', 'grape', 'orange', 'pear']fruits.reverse()
print(fruits)            # 输出: ['pear', 'orange', 'grape', 'cherry', 'apple']new_fruits = fruits.copy()
print(new_fruits)        # 输出: ['pear', 'orange', 'grape', 'cherry', 'apple']fruits.clear()
print(fruits)            # 输出: []
8. 列表的高级用法
8.1 列表推导式 (List Comprehensions)

列表推导式是一种简洁的方式来创建列表。它允许你在一行代码中生成复杂的列表。

# 基本列表推导式
squares = [x**2 for x in range(10)]
print(squares)           # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]# 带条件的列表推导式
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)      # 输出: [0, 4, 16, 36, 64]# 嵌套列表推导式
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]flattened = [num for row in matrix for num in row]
print(flattened)         # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]
8.2 列表的浅拷贝与深拷贝
  • 浅拷贝:只复制列表的第一层元素,对于嵌套的列表,内部的列表仍然是引用。
  • 深拷贝:递归地复制整个列表及其嵌套的子列表。
import copy# 浅拷贝
original = [1, 2, [3, 4]]
shallow_copy = original.copy()original[2][0] = 'changed'
print(original)          # 输出: [1, 2, ['changed', 4]]
print(shallow_copy)      # 输出: [1, 2, ['changed', 4]]# 深拷贝
deep_copy = copy.deepcopy(original)
original[2][0] = 'again changed'
print(original)          # 输出: [1, 2, ['again changed', 4]]
print(deep_copy)         # 输出: [1, 2, ['changed', 4]]
8.3 列表的性能优化
  • 避免频繁的 append() 操作:如果需要构建一个大列表,尽量使用 extend() 或者列表推导式,而不是多次调用 append()
  • 预分配内存:如果你知道最终列表的大小,可以预先分配足够的内存,减少内存重新分配的次数。
  • 使用 deque:如果你需要频繁地在列表的两端进行插入和删除操作,考虑使用 collections.deque,它在两端操作时效率更高。
from collections import deque# 使用 deque 进行高效的两端操作
queue = deque(['apple', 'banana', 'cherry'])
queue.appendleft('pear')
queue.append('orange')
print(queue)             # 输出: deque(['pear', 'apple', 'banana', 'cherry', 'orange'])queue.popleft()
print(queue)             # 输出: deque(['apple', 'banana', 'cherry', 'orange'])
9. 列表的多线程和并发处理

由于列表是可变的,多个线程同时修改同一个列表时可能会导致竞争条件。为了确保线程安全,可以使用 threading.Lock 或者 queue.Queue 来保护共享资源。

import threading
import queue# 使用 Queue 实现线程安全的列表操作
q = queue.Queue()def worker():while True:item = q.get()if item is None:breakprint(f'Processing {item}')q.task_done()threads = []
for i in range(5):t = threading.Thread(target=worker)t.start()threads.append(t)for item in range(20):q.put(item)q.join()for _ in range(5):q.put(None)for t in threads:t.join()
10. 列表的国际化和本地化

虽然列表本身没有直接涉及国际化和本地化的功能,但在处理多语言数据时,你可以结合 gettext 模块来实现列表内容的翻译。

import gettext# 加载翻译文件
translator = gettext.translation('messages', localedir='locales', languages=['fr'])
_ = translator.gettextfruits = ['apple', 'banana', 'cherry']
translated_fruits = [_(fruit) for fruit in fruits]
print(translated_fruits)  # 输出: ['pomme', 'banane', 'cerise']

总结

通过上述详细的解释,我们全面介绍了 Python 列表的基本概念、访问方式、修改操作、内置函数和方法、高级用法以及性能优化技巧。列表是 Python 中非常强大且灵活的数据结构,掌握这些知识可以帮助你在编写代码时更加高效地处理和操作数据。

如果你有任何具体问题或需要进一步的解释,请随时告诉我!

http://www.lryc.cn/news/504304.html

相关文章:

  • Android中bindService和startService启动服务有何区别
  • 超牛免费 机械臂模型、工业机器人模型下载网站集合
  • 引领未来的变革:15种前沿RAG技术及其应用探索
  • Scala泛型应用场景
  • AI监控赋能健身馆与游泳馆全方位守护,提升安全效率
  • Avalonia实战实例二:添加三种状态的Svg图片按钮
  • 基于注意力的几何感知的深度学习对接模型 GAABind - 评测
  • arcGIS使用笔记(无人机tif合并、导出、去除黑边、重采样)
  • Color-Light-Control-and-Four-Way-Responder based on STM32F103C8T6
  • openGauss开源数据库实战二十八
  • Vue3之响应式系统详解
  • Kafka 的配置文件
  • 【系统思辨】分散注意
  • 单幅图像合成 360° 3D 场景的新方法:PanoDreamer,可同时生成全景图像和相应的深度信息。
  • Python课设-谁为影狂-豆瓣数据【数据获取与预处理课设】
  • 关卡选择与布局器
  • 评估一套呼叫中心大模型呼出机器人的投入回报比?
  • 面向对象的 CLI:使用 Fire 简化类和对象的方法暴露 (中英双语)
  • flutter控件buildDragTargetWidget详解
  • 使用webrtc-streamer查看实时监控
  • 【数据分享】2014-2024年我国POI兴趣点数据(免费获取/来源于OSM地图)
  • Leetcode 3389. Minimum Operations to Make Character Frequencies Equal
  • Vite 与 Webpack 的区别
  • 基于32单片机的RS485综合土壤传感器检测土壤PH、氮磷钾的使用(超详细)
  • 【从零开始入门unity游戏开发之——C#篇11】一个标准 C# 程序介绍、新的值类型——枚举
  • vue 签名校验 md5 uuid
  • CSS系列(16)-- 架构与模式详解
  • 【go语言】reflect包与类型推断
  • 3.python运算符
  • 【竞技宝】CS2-上海major:spirit力克MOUZ niko梦碎