lis
是一个列表。想把它当作2d列表操作并用一些更新
值。
lis = [0 for i in range(3)]
print "1st time list",lis
for i in range(3):
lis[i]=[0]*2 # replaced and tried with lis[i]=[0,0]
print "2nd time list ",lis
for i in range(3):
for j in lis[i]:
print "i:",i
print "j:",j
lis[i][j] = i+j
print "value entered: ", lis[i][j] # here showing correct o/p
print lis #should be [[0,0],[1,1],[2,2]] , but not coming
#as expected.
有人可以解释并纠正我吗?
答案 0 :(得分:0)
我假设您要做的是让每个内部列表都包含索引号作为元素[[0,0],[1,1],[2,2],[3,3] ...]
保持代码的当前结构,这应该有效:
lis = [0 for i in range(3)]
print "1st time list",lis
for i in range(3):
lis[i]=[0]*2 # replaced and tried with lis[i]=[0,0]
print "2nd time list ",lis
for i in range(len(lis)):
lis[i] = [i, i]
print lis
你的工作不起作用的原因是因为你正在做内循环。 for j in lis[i]
没有按照您的期望行事。该行的作用是它需要lis [i]本身就是一个列表,并循环遍历该列表中的每个元素。在该循环时,最后一个元素为0,因此您总是在最终内部列表位置获得0。
这可能是一种更简单的方法来实现你想要的东西(虽然我不知道你的例子是否是一个大型项目的一部分,需要你按照你现在的方式去做):
numElements = 3
lis = []
for i in range(numElements):
lis.append([i,i])
print lis
答案 1 :(得分:0)
这是一种填充列表的方法,因此它最终会显示您想要的内容:
lis = range(3)
print "1st time list", lis
for i in range(len(lis)):
j = lis[i]
lis[i] = [j, j]
print lis # -> [[0, 0], [1, 1], [2, 2]]
有更短更快的方法可以做到这一点,但由于它不清楚你想要完成什么,我还没有展示它们。
答案 2 :(得分:0)
如果你想创建类似[[0,0],[1,1],[2,2],......]的东西
我会这样做,
print [[i, i] for i in xrange(n)]
其中n是您想要的此类条目的数量。在您的第一个示例中,n = 3
您可以阅读有关列表推导https://docs.python.org/2/tutorial/datastructures.html
的更多信息