嵌套列表的两个切片

时间:2018-03-25 16:03:53

标签: python

有一个嵌套列表[[1,1],[2,2],[3,3],[4,4]]。

我想用三个片段迭代列表。我属于[0,3],j = i-1,k = i-2

例如:

     slice 1: [3, 3], [4, 4]
     slice 2: [2, 2], [3, 3]
     slice 3: [1, 1], [2, 2]

我该怎么办?

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

s = [[1, 1], [2, 2], [3, 3], [4,4]]
new_s = {"slice {}".format(len(s)-i-1):[s[i], s[i+1]] for i in range(len(s)-1)}

输出:

{'slice 1': [[3, 3], [4, 4]], 'slice 3': [[1, 1], [2, 2]], 'slice 2': [[2, 2], [3, 3]]}

答案 1 :(得分:0)

使用zip()您可以创建输出,如:

代码:

new_data = list(zip(reversed(data[:-1]), reversed(data)))

测试代码:

data = [[1, 1], [2, 2], [3, 3], [4, 4]]
new_data = list(zip(reversed(data[:-1]), reversed(data)))
print(new_data)

如果你想要一个字典:

new_data = {'slice_{}'.format(i): d for i, d in
            enumerate(zip(reversed(data[:-1]), reversed(data)), 1)}
print(new_data)

结果:

[([3, 3], [4, 4]), ([2, 2], [3, 3]), ([1, 1], [2, 2])]

{'slice_1': ([3, 3], [4, 4]), 'slice_2': ([2, 2], [3, 3]), 'slice_3': ([1, 1], [2, 2])}