如何使用循环和范围功能来增加值?

时间:2019-04-21 14:51:16

标签: python python-3.x csv

我不确定如何表达我的问题,但基本上是针对我的代码:

行是列表列表。例如,[[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])(例如),有没有办法压缩此代码?

1 个答案:

答案 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])