这很有效,但看起来很难看。
# 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')
我能申请什么才能让这更好?
答案 0 :(得分:3)
您可以使用enumerate()
获取索引,而不是使用.index()
-
for block in ts_wrap_array:
for j, date in enumerate(block):
block[j] = str(date).replace('.0', '000')
列表comphrension替代 -
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
循环方法。
答案 1 :(得分:1)
你可以enumerate
阻止:
for block in ts_wrap_array:
for i, date in enumerate(block):
block[i] = str(date).replace('.0', '000')
答案 2 :(得分:0)
for i, block in enumerate(ts_wrap_array):
for j, date in enumerate(block):
ts_wrap_array[i][j] = str(date).replace('.0', '000')