Получить новый список с условным порядком приращения элементов из списка списков
У меня есть список списка целых чисел, как показано ниже:
flst = [[19],
[21, 31],
[22],
[23],
[9, 25],
[26],
[27, 29],
[28],
[27, 29],
[2, 8, 30],
[21, 31],
[5, 11, 32],
[33]]
Я хочу получить список целых чисел в порядке возрастания, как показано ниже:
out = [19, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33]
Я хочу сравнить каждый элемент списка с элементом (ами) в следующем списке и получить элемент, который больше, чем предыдущий элемент:
Например: в списке первым пунктом является [19], а следующими пунктами списка является [21,31]. Оба элемента больше, чем [19], но [21] близок к [19], поэтому его следует выбрать.
Я изучаю Python и попробовал следующий код:
for i in range(len(flst)-2):
for j in flst[i+1]:
if j in range(flst[j], flst[j+2]):
print(j)
Прошел много кодов для возрастающего порядка в stackru, но не смог найти никакого решения.
2 ответа
Попробуй это:
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]
Выход (в flst): [19, 21, 22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33]
Как можно ближе к одной линии, как я мог получить
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]