Python从一个列表中创建多个列表

3

我有一个类似这样的列表 mylist = [1,2,3,4,5,6] 现在我需要循环遍历这个列表并创建3个新的列表,如下所示:

 new1 = [1,4]
 new2 = [2,5]
 new3 = [3,6]

什么是最简单的方法来完成这个任务?

5
你制作新列表的标准是什么?你想将原列表分为三个相等的部分吗?还是每两个项目分开一次来创建新列表?如果mylist中有8个项目,会发生什么? - ASGM
原始列表中的元素数量是任意的吗? - Zacrath
主列表可以有无限的项目。只需要创建3个新列表。第一个和第四个项目需要在同一个列表中。同样,第二个和第五个,第三个和第六个也是如此,就像示例一样。因此,第一个列表将看起来像 new1=[1,4,7...] - Goran
2个回答

9
使用切片:
>>> mylist = [1,2,3,4,5,6]
>>> mylist[::3]
[1, 4]
>>> mylist[1::3]
[2, 5]
>>> mylist[2::3]
[3, 6]

>>> lis = range(1,21)
>>> new1, new2, new3 = [lis[i::3] for i in xrange(3)]
>>> new1
[1, 4, 7, 10, 13, 16, 19]
>>> new2
[2, 5, 8, 11, 14, 17, 20]
>>> new3
[3, 6, 9, 12, 15, 18]

如果你还不熟悉切片操作,建议阅读以下文章:解释Python的切片操作符


1
@Goran 不会。但是如果你希望它这样做,你需要更具体地描述你期望的行为。 - ASGM
我需要三个新列表,但主列表可以有无限的项目。第一个和第四个项目必须与示例中的相同列表等等。 - Goran

2
也许你应该使用 numpy
>>> import numpy as np
>>> arr = np.array([1,2,3,4,5,6])
>>> arr.reshape((arr.size//3, 3)).T
array([[1, 4],
       [2, 5],
       [3, 6]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接