从列表列表中获取具有条件的元素递增顺序的新列表

时间:2018-09-01 19:52:52

标签: arrays python-3.x nested-lists

我有一个整数列表,如下所示:

2

我想按升序获取整数列表,如下所示:

 flst = [[19],
 [21, 31],
 [22],
 [23],
 [9, 25],
 [26],
 [27, 29],
 [28],
 [27, 29],
 [2, 8, 30],
 [21, 31],
 [5, 11, 32],
 [33]]

我想将每个列表项与下一个列表中的一个或多个项目进行比较,并获得大于上一个项目的项目:

例如: 在列表中,第一个项目是[19],下一个列表项目是[21,31]。两个元素都大于[19],但[21]接近[19],因此应选择它。

我正在学习python并尝试了以下代码:

out = [19, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33]

通过了许多代码以获取stackoverflow中的递增顺序,但是找不到任何解决方案。

2 个答案:

答案 0 :(得分:1)

尝试一下:

""

输出(最初):flst[0]=flst[0][0] for c in range(len(flst)-1): flst[c+1]=sorted([n for n in flst[c+1] if n>flst[c]],key=lambda x: x-flst[c])[0]

答案 1 :(得分:1)

尽可能接近一行

func = lambda x, t=[]: ([t.append(min([i for i in c if i > max([0]+t)])) for (index, c) in enumerate(x)], sorted(t))[1]

func(flst)
[19, 21, 23, 25, 26, 27, 29, 29, 30, 31, 31, 32, 33]