Python 更优雅地改变数组的数组

Python 更优雅地改变数组的数组,python,loops,multidimensional-array,Python,Loops,Multidimensional Array,这很管用,但看起来很难看 # convert timestamps to psql timestamp format for block in ts_wrap_array: for date in block: ts_wrap_array[ts_wrap_array.index(block)][block.index(date)] = str(date).replace('.0', '000') 有什么我可以做得更好的吗?使用 您可以使用

这很管用,但看起来很难看

    # convert timestamps to psql timestamp format
    for block in ts_wrap_array:
        for date in block:
            ts_wrap_array[ts_wrap_array.index(block)][block.index(date)] = str(date).replace('.0', '000')
有什么我可以做得更好的吗?

使用

您可以使用来获取索引,而不是使用
.index()
-


列表压缩替代方案-

ts_wrap_array[:] = [[str(date).replace('.0', '000') for date in block] for block in ts_wrap_array]
请注意,这不会影响直接指向内部列表的任何其他变量(使用
for
循环方法时会受到影响),例如-

>>> l = [[1,2,3,4],[3,4,5,6]]
>>> k = l[0]
>>> l[:] = [[x + 1 for x in y] for y in l]
>>> l
[[2, 3, 4, 5], [4, 5, 6, 7]]
>>> k
[1, 2, 3, 4]
因此,如果上述情况对您的情况是真实的,您应该使用答案顶部给出的
for
循环方法。

您可以:

for block in ts_wrap_array:
    for i, date in enumerate(block):
        block[i] = str(date).replace('.0', '000')

这是最好的方法吗?这取决于有一种列表理解方法,但这不会影响指向同一列表的其他名称。第一个枚举不是必需的。正确,已修复。谢谢:)@ajanakos另外,如果答案完全解决了您的问题,我想请您通过单击答案左侧的勾号来接受答案(以您觉得最好的为准)。这对社区是有帮助的。
>>> l = [[1,2,3,4],[3,4,5,6]]
>>> k = l[0]
>>> l[:] = [[x + 1 for x in y] for y in l]
>>> l
[[2, 3, 4, 5], [4, 5, 6, 7]]
>>> k
[1, 2, 3, 4]
for block in ts_wrap_array:
    for i, date in enumerate(block):
        block[i] = str(date).replace('.0', '000')