使用列表理解创建列表列表

Creating a list of lists using list comprehension

我需要使用列表理解创建一个代码,该代码查看预定列表 X = [5,6,7] 并创建一个新列表,其中包含 X 的幂列表,幂从 0 到k。我能够编写可以创建 X 的权力的代码,但是当我 运行 我的代码而不是收到所需的输出时:

[[1, 5, 25], [1, 6, 36], [1, 7, 49]]

我收到这个:[[1, 5, 25, 1, 6, 36, 1, 7, 49]]

这是我的代码 运行ning,

[[i**j for i in X for j in range(k+1)]]

我试过摆弄括号的位置,但是当我将括号更改为仅包含 [i**j] 时,结果变得更加奇怪: [[1], [5], [25], [1], [6], [36], [1], [7], [49]]

如有任何帮助或建议,我们将不胜感激!

您需要嵌套列表解析。

[[i**j for j in range(k+1)] for i in X]

在list comp中,先执行外层循环,然后根据编号执行嵌套循环。

[[pow(number,power) for power in range(k+1)] for number in x]

需要使用嵌套列表理解。

res = [[num ** i for i in range(k+1)] for num in x]

列表理解'[num ** i for i in range(k+1)]'对于'x'中的每个数字是运行。这将为 x 中的每个数字创建 0 到 k 的幂列表。

X = [5,6,7]

# list comprehension: lst = [<obj-expression> for <obj> in <iterable>]

# using divide-and-conquer technique,
# I am able to make the list as following:
lst1 = []
for x in X:
    lst1.append([x**i for i in range(0, 3)])
print(lst1)

# Now, I can combine them together using the list comprehension definition:
lst2 = [[x**i for i in range(0, 3)] for x in X]
print(lst2)