数组的嵌套列表理解是否相同?

时间:2019-01-17 18:36:04

标签: python

我创建了一个嵌套列表推导,以便从2d数组中打印出一些文本;但是,当我同时打印输出时,我的2d数组和列表推导会返回2个不同的结果。

我该如何解决?

列表理解是我今晚刚学到的东西,所以我不太了解。

我的代码:

 for a in range(int(numOfColumns)):
     for b in range(numOfRows):
#         print(Matrix)
          print(Matrix[b][a]),

result = "".join(["".join(row) for row in Matrix])
print(result)
print("\n")
print(Matrix)

2 个答案:

答案 0 :(得分:2)

您的for循环的等效列表理解为:

result = ''.join(Matrix[b][a] for a in range(int(numOfColumns)) for b in range(numOfRows))

将这样的两个列表理解链接起来并不是我期望在Python中常规看到或编写的东西,但是它受支持。不幸的是,在索引“错误的方法”以简化工作时似乎很有必要。

请注意,这也将相对较慢地执行,因为您将以无法预料到CPU缓存的方式访问内存。如果您可以按照@nicholishen的建议安排事物的顺序,那么事物将会更快-显然在这里不可能

答案 1 :(得分:1)

您需要在理解中嵌套第二个for循环,就像在详细的嵌套循环中一样。例如:

m = ['EXCELLENT', 'WORK', 'YOU', 'HAVE']

for a in m:
    for b in a:
        print(b)

result = ''.join(b for a in m for b in a)
print(result)