вставка элемента в список в определенном формате

#python #list

#python #Список

Вопрос:

У меня есть два списка list1 и list2 (указанные в коде), я должен вставить list2 таким образом, чтобы он отображался в следующем формате:

вывод

Код, который я возвращаю, является:

 list1 = ["c","o",["m",["p","u",["t","e"],"o"],"g"],"r","a","m"]

list2 = ["r","p","r"]

for i in list1:
  for j in i:
    for k in list2:
      if ord(k)<ord(j):
        list1.insert(list1.index(j),k)
  

Кто-нибудь может помочь мне получить правильный код.

Ответ №1:

Вам нужно сначала найти самый внутренний список, а затем в конечном итоге добавить к нему свой список inner-most-list :

 list1 = ["c","o",["m",["p","u",["t","e"],"o"],"g"],"r","a","m"]

list2 = ["r","p","r"]

inner_most_list = list1
found = False
while not found:
    for index, el in enumerate(inner_most_list):
        print(index, el)
        if isinstance(el, list):
            inner_most_list = el
            break
        if index == len(inner_most_list)-1:
            # Reached end of recursive-list possibilities
            found = True
            break

inner_most_list.extend(list2)
print(list1)
  

Вывод:

 ['c', 'o', ['m', ['p', 'u', ['t', 'e', 'r', 'p', 'r'], 'o'], 'g'], 'r', 'a', 'm'
  

Код является общим и должен работать и для других тестовых примеров.

Комментарии:

1. спасибо, вы это хорошо объяснили. 🙂

2. @JonardanCena Если вы нашли ответ полезным, пожалуйста, выберите лучший ответ, чтобы помочь другим в подобных ситуациях