繁体   English   中英

尝试遍历python数组中的特定列

[英]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循环,您可以重复使用它们。

(我修改了您的列表理解,我使用yx而不是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM