Python3 列表代码实例
·
列表基础
Python 中的列表(list)本质是一个有序、可变、可重复的序列容器。列表的声明和初始化可以通过以下方式实现:
list1 = [1, 2, 3, 4, 5] # 直接赋值
list2 = list() # 空列表
list3 = [] # 空列表(简写)
list4 = list(range(5)) # 通过可迭代对象创建
list5 = [0] * 10 # 重复元素初始化
列表输入与输出
使用内置函数可以方便地进行列表的输入和输出操作:
# 手动输入元素
n = int(input("Enter number of elements: "))
nums = []
for i in range(n):
val = int(input(f"Element {i+1}: "))
nums.append(val)
print("Your list:", nums) # 直接输出整个列表
# 格式化输出
for i, val in enumerate(nums):
print(f"Index {i}: {val}")
常用列表处理函数/方法
Python 内置了丰富的列表操作方法:
nums = [3, 1, 4, 1, 5]
# 添加元素
nums.append(9) # 末尾添加
nums.insert(0, 0) # 指定位置插入
nums.extend([2, 6]) # 批量扩展
# 删除元素
nums.remove(1) # 删除第一个匹配值
popped = nums.pop() # 删除并返回末尾元素
del nums[0] # 按索引删除
# 查找与统计
print(nums.index(4)) # 查找元素索引
print(nums.count(1)) # 统计出现次数
# 排序与反转
nums.sort() # 原地升序排序
nums.sort(reverse=True) # 原地降序排序
nums.reverse() # 原地反转
# 其他常用操作
print(len(nums)) # 列表长度
print(max(nums), min(nums)) # 最值
print(sum(nums)) # 求和
列表与索引/切片
列表与索引密切相关,支持正向/反向索引和切片操作:
fruits = ["apple", "banana", "cherry", "date", "elderberry"]
# 索引访问
print(fruits[0]) # 第一个元素: apple
print(fruits[-1]) # 最后一个元素: elderberry
# 切片操作 [start:end:step]
print(fruits[1:4]) # ['banana', 'cherry', 'date']
print(fruits[::2]) # ['apple', 'cherry', 'elderberry']
print(fruits[::-1]) # 反转列表
# 遍历列表
for fruit in fruits:
print(fruit, end=" ")
print()
嵌套列表(二维列表)
处理多维数据时可以使用嵌套列表:
# 二维列表
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 访问元素
print(matrix[1][2]) # 6
# 遍历二维列表
for row in matrix:
for val in row:
print(f"{val:2d}", end=" ")
print()
# 列表推导式创建二维列表
n, m = 3, 4
grid = [[0 for _ in range(m)] for _ in range(n)]
print(grid)
列表操作示例
列表推导式是一个强大特性,可以简洁地创建和转换列表:
# 基础列表推导式
squares = [x**2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 带条件的列表推导式
evens = [x for x in range(20) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# 嵌套列表推导式
pairs = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
print(pairs)
# 字符串处理
words = ["Hello", "World", "Python"]
upper_words = [w.upper() for w in words]
print(upper_words) # ['HELLO', 'WORLD', 'PYTHON']
安全列表处理
为防止索引越界和意外修改,推荐以下安全做法:
data = [10, 20, 30, 40, 50]
# 安全访问(避免 IndexError)
index = 10
value = data[index] if 0 <= index < len(data) else None
print(value) # None
# 使用 try-except
try:
val = data[10]
except IndexError:
val = "Index out of range"
print(val)
# 复制列表(避免引用问题)
copy1 = data.copy() # 浅拷贝
copy2 = data[:] # 切片拷贝
copy3 = list(data) # 构造函数拷贝
import copy
deep_copy = copy.deepcopy(data) # 深拷贝(嵌套列表时必需)
自定义列表函数
实现自定义的列表处理函数可以加深对列表的理解:
def my_sum(lst):
"""自定义求和函数"""
total = 0
for val in lst:
total += val
return total
def my_max(lst):
"""自定义最大值函数"""
if not lst:
return None
max_val = lst[0]
for val in lst[1:]:
if val > max_val:
max_val = val
return max_val
def flatten(nested):
"""扁平化嵌套列表"""
result = []
for item in nested:
if isinstance(item, list):
result.extend(flatten(item))
else:
result.append(item)
return result
# 测试
nums = [3, 1, 4, 1, 5, 9, 2, 6]
print(f"Sum: {my_sum(nums)}") # 31
print(f"Max: {my_max(nums)}") # 9
nested = [1, [2, [3, 4], 5], 6]
print(flatten(nested)) # [1, 2, 3, 4, 5, 6]
性能注意事项
列表操作在 Python 中需要特别注意性能和内存问题:
- 避免频繁的中间列表创建:优先使用生成器表达式处理大数据
- 预分配容量:对于已知大小的列表,使用
[None] * n预分配 - 选择合适的数据结构:频繁在头部插入/删除时考虑
collections.deque - 列表推导式优于循环:在可读性允许的情况下,推导式通常更快
以上代码示例涵盖了 Python3 列表的主要概念和操作,从基础用法到高级技巧,为开发者提供了全面的参考。
更多推荐


所有评论(0)