使用列表理解创建列表列表
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)
我需要使用列表理解创建一个代码,该代码查看预定列表 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)