从for循环中获取变量?

时间:2019-09-28 08:27:03

标签: python python-3.x

嗨,我是python的新手,有一个我想在for循环外使用的变量,代码如下:

positive_slopes=[[rows[p - q][q]
             for q in range(max(p-column_length+1,0), min(p+1, row_length))]
            for p in range(column_length + row_length - 1)]

在这种情况下,我想获取[p-q]和[q]的所有值,但是我真的不知道如何操作此代码,当我尝试更改某些内容时,它实际上会中断。

我尝试使用普通的for循环,但结果与上面的代码不同。我尝试使用的for循环代码是:

for p in range(column_length + row_length - 1):
    for q in range(max(p-column_length+1,0), min(p+1, row_length)):
            positive_slopes.append(rows[p - q][q])

这与列表理解代码给出的结果并不完全相同。输出为:

['e', 'a', 'a', 'g', 'l', 'h', 'r', 'o', 'l', 'a', 'i', 'h', 'h', 'e', 'e', 'i', 'a', 'e', 'l', 'h', 'h', 'h', 'i', 'y', 'l', 'o', 'o', 'h', 'l', 'a', 'o', 'l', 'a', 'h', 'h', 'e', 'y', 'o', 'u', 'a', 'l', 'i', 'y', 'l', 'a', 'u', 'l', 'h', 'o']

列表理解为我提供了这一点:

[['e'], ['a', 'a'], ['g', 'l', 'h'], ['r', 'o', 'l', 'a'], ['i', 'h', 'h', 'e', 'e'], ['i', 'a', 'e', 'l', 'h', 'h'], ['h', 'i', 'y', 'l', 'o', 'o', 'h'], ['l', 'a', 'o', 'l', 'a', 'h'], ['h', 'e', 'y', 'o', 'u'], ['a', 'l', 'i', 'y'], ['l', 'a', 'u'], ['l', 'h'], ['o']]

两个输出的元素相同,但是我希望for循环像列表理解一样对字母进行分组。我在for循环中缺少什么给我相同的输出。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

您编辑的代码应类似于:

for p in range(column_length + row_length - 1):
    tempList = []
    for q in range(max(p-column_length+1,0), min(p+1, row_length)):
            tempList.append(rows[p - q][q])
    positive_slopes.append(tempList)