Python 将1D列表转换为三角形2D列表
我有一个列表,范围从1到55,第2步:Python 将1D列表转换为三角形2D列表,python,python-3.x,Python,Python 3.x,我有一个列表,范围从1到55,第2步:[1,3,5,7,9,11,13,15,…,53]。 我想做的是用第一个列表中的数字填充另一个列表,它是2D和三角形的 def odd_triangle(n): a = [] b = [] for number in range(1, 55, 2): a.append(number) for i in range(n): b.append([]) for j in range(i
[1,3,5,7,9,11,13,15,…,53]
。
我想做的是用第一个列表中的数字填充另一个列表,它是2D和三角形的
def odd_triangle(n):
a = []
b = []
for number in range(1, 55, 2):
a.append(number)
for i in range(n):
b.append([])
for j in range(i+1):
b[i].append(a[i])
print(b)
在我调用该函数后,例如奇数三角形(5)
(将创建5行),它给出的不是我想要的:
[[1]、[3,3]、[5,5,5]、[7,7,7]、[9,9,9,9]
我想要的是:[[1]、[3,5]、[7,9,11]、[13,15,17,19]、[21,23,25,27,29]
这将起作用:
a = list(range(1,55,2))
n = 5
it = iter(a)
b = list([next(it) for _ in range(i)] for i in range(1, n+1))
给出:
[[1], [3, 5], [7, 9, 11], [13, 15, 17, 19], [21, 23, 25, 27, 29]]
这里,
next(it)
每次调用它时,只需从a
上的迭代器中获取下一个值。每次追加a[i]
。添加[j+i]或其他内容。如果每次都要附加一个不同的元素,则每次都需要附加一个不同的元素。投票关闭是因为键入错误。