输入
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
n = 3
预期产出
[1, 4, 7, 2, 5, 8, 3, 6, 9]
我想根据list1
安排n
。
答案 0 :(得分:1)
在这种情况下使用zip()
?
>>> [list1[i:i+n] for i in range(0, len(list1), n)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> list(zip(*[list1[i:i+n] for i in range(0, len(list1), n)]))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>>
答案 1 :(得分:1)
怎么样:
list1 = [1,2,3,4,5,6,7,8,9]
n = 3
res = []
for i in range(n):
res += list1[i::n]
print(res)
答案 2 :(得分:-1)
list1 = [1,2,3,4,5,6,7,8,9]
n = 3
m = len(list1)
list2 = [list1[x%(m-1)] for x in range(0, n*(m-1), n)]
list2.append(list1[-1])
print list2
%是模运算符。基本上,range语句的迭代次数是列表长度的0到3倍。模运算符将迭代裁剪到列表长度内的正确数字。不幸的是,使用此方法无法达到列表的最后一个条目,因为x%(m-1)将为零。因此,必须单独处理最后一个条目。