Заменить элементы в списке и отсортировать список - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть 2 списка

a=[2,4,6]
b=[1,3,5,-1,-1,-1]

Я должен заменить -1 в b элементами из списка a, а затем распечатать b как отсортированный список

Ожидаемый

output= [1,2,3,4,5,6]

Ответы [ 5 ]

0 голосов
/ 02 февраля 2019

Этот подробный параметр работает также, если -1 больше len(a):

a=[2,4,6]
b=[1,3,5,-1,-1,-1,-1]

def replace(iterable, replacements):
  i = 0
  for e in iterable:
    if e == -1 and i < len(replacements):
      yield replacements[i]
      i += 1
    else:
      yield e

res = sorted(replace(b, a))

print(res) #=> [-1, 1, 2, 3, 4, 5, 6]
0 голосов
/ 02 февраля 2019

Вы можете использовать метод list.pop(), чтобы получить следующий элемент из b, одновременно удаляя его, а затем обернуть весь список в sorted():

a = [2,4,6]
b = [1,3,5,-1,-1,-1]


a = sorted([b.pop(0) if i == -1 else i
            for i in a]

Однако, если вы хотитечтобы сохранить список b, лучше использовать next() на iter(a), как написано в другом ответе.

0 голосов
/ 02 февраля 2019

Вы можете сделать со списком-пониманием и вызвать на нем sorted():

a = [2,4,6]
b = [1,3,5,-1,-1,-1]

a = iter(a)
output = sorted([next(a) if x == -1 else x for x in b])

print(output)
# [1, 2, 3, 4, 5, 6]
0 голосов
/ 02 февраля 2019
    for i in a:
      b[b.index(-1)]=i
    b.sort()

Выше все, что нужно для вашего требования

0 голосов
/ 02 февраля 2019

Попробуйте:

a=[2,4,6]
b=[1,3,5,-1,-1,-1]
a.reverse()

for i,v in enumerate(b):
    if v == -1:
        b[i] = a.pop()   

Затем вы можете отсортировать b, как хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...