Python中数组与C语言对比 Python
在 Python 中,没有像 C 语言 int arr[5]; 这样直接声明固定大小、固定类型数组的语法。Python 的内置序列类型(如 list、tuple)都是动态的:列表可以随时增删元素,且元素类型可以混合。
不过,根据你的需求,有多种方式可以模拟或实现类似 C 数组的行为:
---
1. 使用列表 + 预分配大小(最常用)
虽然列表是动态的,但你可以预先创建一个指定长度、初始值相同的列表:
# 创建长度为5的整数列表,所有元素初始为0
arr = [0] * 5
print(arr) # [0, 0, 0, 0, 0]
# 修改某个元素
arr[2] = 99
print(arr) # [0, 0, 99, 0, 0]
⚠️ 注意:这种方式的列表依然可以 append() 增加长度,并非真正固定大小。如果你需要“固定长度”的约束,需要自己通过代码保证(例如不调用 append/pop)。
---
2. 使用 array 模块(类型固定,内存紧凑)
array 模块提供类型化的数组,元素类型必须一致,内存占用比列表小,但仍然是动态的(可以增删元素)。
from array import array
# 创建类型为 'i'(有符号整数)、长度为5的数组,初始值全为0
arr = array('i', [0]) * 5 # 或者 array('i', [0, 0, 0, 0, 0])
print(arr) # array('i', [0, 0, 0, 0, 0])
# 可以修改元素
arr[1] = 42
print(arr) # array('i', [0, 42, 0, 0, 0])
# 但依然可以动态增加(不推荐,如果需要固定大小需自行控制)
arr.append(100)
常用类型码:'i'(signed int)、'f'(float)、'd'(double) 等。
---
3. 使用 NumPy(真正的固定大小多维数组)
如果你进行科学计算或需要真正固定大小、高性能的数值数组,推荐使用 NumPy:
import numpy as np
# 创建长度为5的整数数组,所有元素为0
arr = np.zeros(5, dtype=int)
print(arr) # [0 0 0 0 0]
# 修改元素
arr[2] = 99
# 试图 append 会报错(NumPy 数组大小固定)
# arr.append(100) # AttributeError
NumPy 数组在创建后大小不可变(除非显式创建新数组),更接近 C 数组的行为,且支持向量化运算。
---
对比总结
方式 类型固定 大小固定 内存效率 语法接近 C 数组
[0]*5 列表 ❌ ❌ 一般 ❌
array('i', [0])*5 ✅ ❌ 高 一般
NumPy np.zeros() ✅ ✅ 高 ✅(需第三方库)
结论:
· 日常简单场景,用 [0]*5 预分配列表即可。
· 需要类型固定、节省内存且不关心动态增删,用 array。
· 需要真正固定大小、数学运算或多维数组,用 NumPy。
· Python 语言本身没有提供类似 int arr[5]; 的语法,因为它的设计哲学是动态、简洁。
评论 (0)
登录后可以发表评论
立即登录还没有评论,快来发表第一条评论吧!