Python 我如何用3创建此矩阵?
我想为参数dem[I][t][c]创建一个矩阵,即时间t时节点I中商品类型c的需求量 我的代码是:Python 我如何用3创建此矩阵?,python,list,for-loop,Python,List,For Loop,我想为参数dem[I][t][c]创建一个矩阵,即时间t时节点I中商品类型c的需求量 我的代码是: pdd = 1 # number of node i r = 2 # number of commodity type c e = 1 # number of period t dem = [] dem1 = [] dem2 = [] dem3 = [] for i in range(pdd): for c in range(r): for t
pdd = 1 # number of node i
r = 2 # number of commodity type c
e = 1 # number of period t
dem = []
dem1 = []
dem2 = []
dem3 = []
for i in range(pdd):
for c in range(r):
for t in range(e):
dem0 = 1000
dem1.append (dem0)
dem2.append (dem1)
dem.append(dem2)
print dem
对于这个示例,我需要这个矩阵:[[1000],[1000]]]但是python打印如下:[[1000,1000],[1000,1000]]您引用的是同一个列表
dem1
,这意味着当您附加值1000时,它将保留在列表dem1
中,未来的附加将建立此列表
试试这个:
pdd = 1 # number of node i
r = 2 # number of commodity type c
e = 1 # number of period t
dem = []
dem2 = []
dem3 = []
for i in range(pdd):
for c in range(r):
dem1 = [] # create a new list
for t in range(e):
dem0 = 1000
dem1.append (dem0)
dem2.append (dem1)
dem.append(dem2)
print dem
问题是,当您将一个列表添加到另一个列表时,您正在添加一个引用,因此当您稍后更改它时,它会在添加到的任何地方更改 在本例中,首先为dem1、2和3创建一个新列表,然后添加对它们的引用 在正确的
for
循环中创建列表,如下所示:
pdd = 1 # number of node i
r = 2 # number of commodity type c
e = 1 # number of period t
dem = []
for i in range(pdd):
dem2 = []
for c in range(r):
dem1 = []
for t in range(e):
dem0 = 1000
dem1.append (dem0)
dem2.append (dem1)
dem.append(dem2)
print dem
您还可以将列表理解用作:
dem0 = 1000
dem = [[[dem0 for t in range(e)] for c in range(r)] for i in range(pdd)]
print dem
在那里创建列表只允许
dem1
有1个元素,每次进入for
循环时都会覆盖它。因此,如果e
是>1
,则不会work@RubenBermudez我不确定这是否是op的意图,但我编辑了列表,使其大于len 1