Python中如何初始化数量可变的array数组与dictionary字典?
Python 中没有内置的定长数组类型,通常使用*列表(list)*作为可变长度的动态数组使用,针对你给出的「输入动态长度x、生成对应数量元素」的场景,初始化及相关操作方法如下:
初始化方式
逐元素追加初始化(最常用,匹配你的代码需求)
如果需要循环生成每个元素(比如你代码里每次生成独立的dict_i),直接初始化空列表,循环调用append方法追加元素即可,列表会自动扩容,无需提前指定长度:
x = int(input()) # 初始化空动态数组 my_array = [] for i in range(x): dict_i = {} # 此处可对dict_i做自定义赋值操作,比如dict_i["id"] = i my_array.append(dict_i)
统一初始值快速初始化
如果所有元素的初始值统一,可以直接用列表推导式生成指定长度的数组:
# 生成长度为x、所有元素为0的数组 my_array = [0 for _ in range(x)] # 生成长度为x、每个元素都是独立空字典的数组 my_array = [{} for _ in range(x)]
注意:不要使用
[{}]*x的写法生成多字典数组,该写法会让所有元素指向同一个字典的内存地址,修改任意一个元素都会同步改动所有元素。
常用操作
- 新增元素:末尾追加用
my_array.append(元素),指定索引位置插入用my_array.insert(索引, 元素) - 删除元素:删除指定索引位置元素用
del my_array[索引],弹出末尾元素并返回值用my_array.pop(),删除第一个匹配的元素用my_array.remove(元素) - 访问元素:按索引直接取值
my_array[索引],查询元素第一次出现的索引用my_array.index(元素) - 修改元素:直接给指定索引位置赋值
my_array[索引] = 新值
如果是处理大批量数值计算场景,可以用numpy库的数组,计算性能远高于原生列表,初始化示例:
import numpy as np x = int(input()) # 生成长度为x、元素全为0的整数类型numpy数组 my_np_array = np.zeros(x, dtype=int) # 也可以把原生列表转为numpy数组 my_list = [i for i in range(x)] my_np_array = np.array(my_list)
内容的提问来源于stack exchange,提问作者bramblephoenix
相关产品推荐
相关产品推荐

