如何在Python中实现类似Perl的自动生成非连续数组(稀疏数组)?
在Python中实现稀疏数组的最简单方法
Perl里可以直接给未初始化的数组的超大索引赋值来创建稀疏数组,但Python的列表是连续内存结构,直接这么做会抛出IndexError: list assignment index out of range错误——因为列表当前长度不足,无法直接访问超出范围的索引。
在Python里实现稀疏数组功能,最简单的方式是使用字典(dict):用整数键模拟数组索引,值对应数组元素,只存储实际有值的索引,完全契合稀疏数组的特性。
示例代码:
# 初始化空字典作为稀疏数组 sparse_arr = {} # 给指定索引赋值 sparse_arr[4321] = "blah" # 访问已赋值的索引 print(sparse_arr[4321]) # 输出: blah
如果希望访问不存在的索引时不抛出KeyError,而是返回默认值(比如None),可以用collections模块的defaultdict:
from collections import defaultdict # 初始化默认值为None的稀疏数组 sparse_arr = defaultdict(lambda: None) sparse_arr[4321] = "blah" # 访问未赋值的索引,返回默认值None print(sparse_arr[123]) # 输出: None
内容的提问来源于stack exchange,提问作者Lucky
相关产品推荐
相关产品推荐

