迭代时将列表中的连续元素配对

时间:2016-03-28 20:22:41

标签: list python-2.7 loops

我有一个总是包含偶数个元素的列表 我想迭代这个列表来创建一个包含的新列表 列表中每2个连续数字的列表。

例如:

first_list = [1,2,3,4,5,6,7,8]
second_list = [[1,2], [3,4], [5,6], [7,8]]

当我遍历列表时,我无法弄清楚如何选择连续的对。我尝试了一百万种变体,这是我最接近的变种。

first_list = [1,2,3,4,5,6,7,8]    
second_list = []

pairs = 1

for item in range(len(first_list) - pairs): 
    second_list.append([firs_list[item],first_list[item + pairs]])
print second list

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

我是否有某种方式让for循环遍历其他每一项?

3 个答案:

答案 0 :(得分:1)

此代码应该这样做:

postName

输出:

isRequired

答案 1 :(得分:0)

您可以组合itertools模块中的功能。如果没有最外面的map,它会返回一个元组列表,而map会将其转换为列表列表:

>>> from itertools import cycle, compress, izip
>>> 
>>> lst = [1,2,3,4,5,6,7,8]
>>> map(list, izip(compress(lst, cycle([1, 0])), compress(lst, cycle([0, 1]))))
[[1, 2], [3, 4], [5, 6], [7, 8]]

答案 2 :(得分:0)

你快到了。你需要为范围使用更多的参数。

简单修复:

for item in range(0, len(first_list) - 1, 2):
    second_list.append([first_list[item],first_list[item + 1]])
print second_list

range的参数是range(start, stop[, step]),并告诉它从零开始到长度为1并使用两步。