在Python中编写单行嵌套循环

时间:2019-08-08 21:14:30

标签: python list for-loop nested-loops

我正在尝试将另一个for循环内的for循环压缩为一行代码。这是完整的嵌套循环:

list_of_numbers = []

for i in range(4):
    for n in range(4):
        list_of_numbers.append(n)

我认为下面的代码行是将上面的代码编写为单行嵌套循环的正确方法,但是输出错误。

list_of_numbers = [n for n in range(4) for i in range(4)]

如何将第二个示例代码修改为与第一个示例相同?

(此问题已被重新措词,因此在2019年8月13日之前给出的所有答案都将使用前面的示例来回答相同的问题。)

2 个答案:

答案 0 :(得分:2)

可能直观地进行反击,在嵌套列表理解中,您需要遵循for循环的相同顺序(与普通版本一样)。所以:

[data[((len(data) - 1) - (8 * i)) - (7 - n)] for i in range(int(len(data) / 8)) for n in range(8)]

答案 1 :(得分:1)

因此,解决方案的主要区别在于生成器部分的顺序已切换。

要转换:

"filetype:pdf"

您想这样做:

collection_c = []
for a in collection_a:
   for b in collection_b:
     collection_c.append(a,b)

所以在您的示例中,您最终会得到

collection_c = [ (a,b) for a in collection_a for b in collection_b]