根据条件排列列表中的项目

时间:2015-12-18 09:51:34

标签: python

输入

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
n = 3

预期产出

[1, 4, 7, 2, 5, 8, 3, 6, 9]

我想根据list1安排n

3 个答案:

答案 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)将为零。因此,必须单独处理最后一个条目。