这个可以工作,但是看起来很丑。
# 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')
有什么我可以做得更好的吗?
您可以使用enumerate()
来获取索引,而不是使用.index()
-
for block in ts_wrap_array:
for j, date in enumerate(block):
block[j] = str(date).replace('.0', '000')
一个列表推导的替代-
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
循环方法。
你可以 enumerate
块:
for block in ts_wrap_array:
for i, date in enumerate(block):
block[i] = str(date).replace('.0', '000')
使用enumerate
for i, block in enumerate(ts_wrap_array):
for j, date in enumerate(block):
ts_wrap_array[i][j] = str(date).replace('.0', '000')