如何使用给定的行和列从1D列表创建2D列表?
假设:
>>> book = get_book(42)
>>> book % 10**100
4779746919502753142323572698478137996323206967194197332998517828771427155582287891935067701239737874
它应该返回:
sample_list=[5, 2, 3, 4, 1, 6, 1, 6, 7, 2, 3]
row=2
cols=4
我不需要其他数字= 7,2,3。 我只想要一个包含用户提供的行和列的列表。 我的解决方案没有返回我想要的内容,
我的解决方案:
[[5, 2, 3, 4],[1, 6, 1, 6]]
返回:
def 1D_to_2D(sample_list, row, cols):
return [sample_list[i:i+cols] for i in range(0, len(sample_list), rows)]
任何人都可以提供帮助吗?
答案 0 :(得分:1)
只需使用range
的列表推导和cols
(不使用rows
)步骤对列表进行切片,并使用外部切片限制项目数{{ 1}}:
rows
结果:
sample_list=[5, 2, 3, 4, 1, 6, 1, 6, 7, 2, 3]
rows=2
cols=4
result = [sample_list[x:x+cols] for x in range(0,len(sample_list),cols)][:rows]
答案 1 :(得分:1)
def D_to_2D(sample_list, rows, cols):
return [sample_list[cols*i: cols*(i+1)] for i in range(rows)]
>>> D_to_2D([5, 2, 3, 4, 1, 6, 1, 6, 7, 2, 3], 2, 4)
[[5, 2, 3, 4], [1, 6, 1, 6]]
答案 2 :(得分:0)
f = lambda x, row, cols: [x[i:i+cols] for i in range(0, cols*row, cols)]
f(x, row, cols)