我不确定如何表达我的问题,但基本上是针对我的代码:
行是列表列表。例如,[[0.1,0.20,0.23,0.4],[0.1,0.34,0.4,0.5])
row_values = []
n,i=0,6
for values in range(i):
row_values.append(rows[n][0])
n+=1
i-=1
n,i=0,6
for values in range(i):
row_values.append(rows[n][1])
n+=1
i-=1
n,i=0,6
for values in range(i):
row_values.append(rows[n][2])
n+=1
i-=1
如您所见,我有一个名为row_values的空列表。下面的代码执行range(6)然后执行以下语句,然后将range(5),range(4)... range(1)始终附加到列表row_values。
n,i=0,6
for values in range(i):
row_values.append(rows[n][0])
n+=1
i-=1
基本上对于每第6个循环,e in(rows [n] [e])的值为+1。不必编写(rows [n] [0])至(rows [n] [56])(例如),有没有办法压缩此代码?
答案 0 :(得分:0)
您实际上不需要任何这些循环。在 second 索引上进行一次循环就足够了。
row_values = []
for i in range(3):
row_values.extend(r[i] for r in rows[:6])
这等效于对append
的一组硬编码的调用,如下所示,只要稍加思考,就应该显而易见。
row_values = []
row_values.append(rows[0][0])
row_values.append(rows[1][0])
row_values.append(rows[2][0])
row_values.append(rows[3][0])
row_values.append(rows[4][0])
row_values.append(rows[5][0])
row_values.append(rows[0][1])
row_values.append(rows[1][1])
row_values.append(rows[2][1])
row_values.append(rows[3][1])
row_values.append(rows[4][1])
row_values.append(rows[5][1])
row_values.append(rows[0][2])
row_values.append(rows[1][2])
row_values.append(rows[2][2])
row_values.append(rows[3][2])
row_values.append(rows[4][2])
row_values.append(rows[5][2])