[英]Trying to iterate over specific column in python array
我正在尝试以数组格式创建字典列表。 最初,我希望第一行和第一列
{'score' : 0, 'pointer' : 'none'}
在每个单元格中,但是我的for循环似乎并未实现这一点。
这是我到目前为止的内容:
mymatrix = [[0 for x in range(len(seq1)+1)]for x in range(len(seq2)+1)]
mymatrix[0][0] = {'score' : 0, 'pointer' : 'none'}
for x in mymatrix[0][:]:
x = {'score' : 0, 'pointer' : 'none'}
for y in mymatrix[:][0]:
y = {'score' : 0, 'pointer' : 'none'}
for row in mymatrix:
print row
其中seq1和seq2是字符串。
您已经在列表理解中编写了两个for循环,您可以重复使用它们。
(我修改了您的列表理解,我使用y
和x
而不是2 x
)
seq1 = 'asdfasdfasdf'
seq2 = 'asdfasdfasdf'
mymatrix = [[0 for y in range(len(seq1)+1)]for x in range(len(seq2)+1)]
# ^^^^^^^^^^^^^^^^^^^^^^^^^^ reuse this
d = {'score' : 0, 'pointer' : 'none'}
for y in range(len(seq1)+1):
mymatrix[0][y] = d.copy()
# The first one is already covered, just leave it off using slice
for x in range(len(seq2)+1)[1:]:
mymatrix[x][0] = d.copy()
for line in mymatrix:
print(line)
出:
[{'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}, {'pointer': 'none', 'score': 0}]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[{'pointer': 'none', 'score': 0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
据我所知,问题出在这里:
x = {'score' : 0, 'pointer' : 'none'}
这行代码不会改变实际的矩阵。 您在此处所做的全部工作就是重新分配名称x
的值,该值并不固有地绑定到您要更改的矩阵。 您需要直接引用矩阵。 尝试以下方法:
for xind, x in enumerate(mymatrix[0][:]):
mymatrix[0][xind] = {'score' : 0, 'pointer' : 'none'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.