@pynoob

Как создать список из нескольких списков python?

Доброго дня всем!
Помогите разобраться

Имеются 2 списка:
a = [1, 16, 28, 35]
b = [9, 17, 28, 40]

Из списков получаю c = a + b, затем c.sort():
c = [1, 9, 16, 17, 28, 28, 35, 40]

Как сделать список c так, что нужно сравнивать 2 рядом стоящих числа на их разницу: 1 и 9, 16 и 17, 28 и 28 и т.д., с условием, что, если 1 меньше 9, то в список вставить недостающие по порядку числа: 2, 3, 4, 5, 6, 7, 8; а если числа равны, то оставить из них только одно?
То есть в результате список должен получиться такой: с = [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 28, 35, 36, 37, 38, 39, 40]

Ковырялся с циклами, но пришел в какой-то тупик.

Пришел к тому, что нужно делать что-то вроде
i = 0, d = []
while i < len(c):
if c[i] < c[i+1]:
for m in range(c[i], c[i+1]):
d.append(c+1)
i+
Но кроме ошибок ничего не вышло.
Спасибо
  • Вопрос задан
  • 436 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mentor2
Задача наверняка на слайсы.
>>> c = [1, 9, 16, 17, 28, 28, 35, 40,]
пары не пересекаются, значит бежите по це ровно лен(це) // 2 раз,
но, главное, сам це на ходу менять нельзя, т.е. надо делать це2, и через копи.копи(це)

>>> import copy
>>> c2 = copy.copy(c)
>>> i, j, i2, j2 = 0, 1, 0, 1
>>> for x in range(len(c) // 2):
... ...if c[i] < c [j]:
... ... ...c2[i2:j2] = range(c[i], c[j]) # тело иф - одна строка
... ...i2 = j2 + (c[j]-c[i])
... ...j2 = j2 + (c[j]-c[i])+1
... ...i, j = j+1, j+2
...
>> c2
[1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 28, 35, 36, 37, 38, 39, 35, 40]
>>> c
[1, 9, 16, 17, 28, 28, 35, 40]
>>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы