-3

我有一份表格清单

in_list = [[10, 15], [16,21], [22,25], [26,30], [35,40], [45,50],[51,55]]

而且我需要将在最后一个位置和第一个位置包含连续整数的连续列表组合成列表。所以

if in[1][0] = in[0][1] + 1:
    out[0] = [in[0][0],in[1][1]]

输出的形式为

out_list = [[10,30], [35, 40], [45,55]]

现在,我的代码在out列表上进行多次迭代并组合元素,一直持续到列表中的元素数量在迭代后停止变化。我怎样才能以更 Pythonic 的方式实现这一点?

4

2 回答 2

3

这应该可以解决问题

out = [inp[0]]
for l in inp[1:]:
    if l[0] == out[-1][1] + 1:
        out[-1][1] = l[1]
    else:
        out.append(l)
于 2018-03-27T12:55:52.053 回答
1

您是说使用 numpy 的单行内容吗?:)

尝试以下快捷方式:

import numpy as np

# data is of shape (n,2), n=6
data = np.array([[10, 15], [16,21], [22,25], [26,30], [35,40], [45,50],[51,55]]) 

# seek for consecutive numbers
marks = (data[:-1,1]+ 1) == data[1:,0] 

# re-arrange and return to python lists
output = np.stack([data[:-1,0][marks],data[1:,1][marks]],axis=1).tolist() 

编辑
使用列表的另一个选项:

data = [[10, 15], [16,21], [22,25], [26,30], [35,40], [45,50],[51,55]]

mylist = []

def func(x1,x2):
    if x1[1] +1 == x2[0]:
        mylist.append((x1[0],x2[1]))

list(map(func,data[:-1],data[1:]))
print(mylist)

输出:

[(10, 21), (16, 25), (22, 30), (45, 55)]
于 2018-03-27T12:54:48.820 回答