python并没有C语言中的结构体概念,可以使用对象代替结构体存储数据。
特别注意 列表=[对象]*N 这种写法是错误的,因为初始化得到的N个对象指向相同的地址,实验如下:
class Phase_struct:
pass
#方法1
phases1 = [Phase_struct(),Phase_struct(),Phase_struct()]
print(id(phases1[0]))
print(id(phases1[1]))
print(id(phases1[2]))
#方法2
phases2 = [Phase_struct()]*3
print(id(phases2[0]))
print(id(phases2[1]))
print(id(phases2[2]))
#方法3
phases3= []
N=3
for k in range(N):
phases3.append(Phase_struct())
print(id(phases3[0]))
print(id(phases3[1]))
print(id(phases3[2]))
结果显示方法2得到的列表中所有对象指向地址相同,因此建议使用方法3类似方法进行结构体数组初始化。