Проблеми со спојување и сортирање

  • Креатор на темата Креатор на темата Soham1087
  • Време на започнување Време на започнување
Член од
16 јуни 2022
Мислења
11
Поени од реакции
0
Возраст
28
Здраво таму,

Се обидувам да комбинирам две листи во Python, но наидувам на проблем што не можам да го разберам. Сакам да направам нова листа која наизменично се менува помеѓу записи од две други списоци, слична на оваа:
Код:
List 1: [1, 3, 5]
List 2: [2, 4, 6]
Merged List: [1, 2, 3, 4, 5, 6]
За да го направите ова, го развив следниов код:
Код:
list1 = [1, 3, 5]
list2 = [2, 4, 6]
merged_list = []

for i in range(len(list1)):
    merged_list.append(list1[i])
    merged_list.append(list2[i])

print(merged_list)
Меѓутоа, кога ќе го извршам кодот, добивам грешка „IndexError: list index надвор од опсегот“. Верував дека успешно се повторувам низ списоците користејќи ја техниката range(len(list1)), па го прочитав овој пост со scaler, но не можев да го разберам. Што превидувам овде? Може ли некој да ми помогне да ја разберам и поправам оваа грешка?

Може ли љубезно да ми помогнете да утврдам што ја генерира „Индекс грешка“ и да ме советува како да го решам?
 
Ако те разбирам сакаш да направиш merge на првите две листи?

пример:
Python:
def merge_lists(list1, list2):
    merged_list = sorted(list1 + list2)
    return merged_list

за да ја употребиш во твојот случај:
Python:
list1 = [1, 3, 5]
list2 = [2, 4, 6]

merged = merge_lists(list1, list2)
print("Споена листа:", merged)
 
Здраво таму,

Се обидувам да комбинирам две листи во Python, но наидувам на проблем што не можам да го разберам. Сакам да направам нова листа која наизменично се менува помеѓу записи од две други списоци, слична на оваа:
Код:
List 1: [1, 3, 5]
List 2: [2, 4, 6]
Merged List: [1, 2, 3, 4, 5, 6]
За да го направите ова, го развив следниов код:
Код:
list1 = [1, 3, 5]
list2 = [2, 4, 6]
merged_list = []

for i in range(len(list1)):
    merged_list.append(list1[i])
    merged_list.append(list2[i])

print(merged_list)
Меѓутоа, кога ќе го извршам кодот, добивам грешка „IndexError: list index надвор од опсегот“. Верував дека успешно се повторувам низ списоците користејќи ја техниката range(len(list1)), па го прочитав овој пост со scaler, но не можев да го разберам. Што превидувам овде? Може ли некој да ми помогне да ја разберам и поправам оваа грешка?

Може ли љубезно да ми помогнете да утврдам што ја генерира „Индекс грешка“ и да ме советува како да го решам?
so tvojov kod listite treba da bidat so ista golemina.
funkcijata od leste ti dava moznost da spois dve sortirani listi bez raslika na nivnata golemina.
inaku tocen tie kodot, naizmedicno od dvete listi dodavas element vo novata merged_list.

for i in range(len(list1)):
merged_list.append(list1)
merged_list.append(list2) /*greska ako len(list(2)) > len(list(1))*/
 
Последно уредено:
so tvojov kod listite treba da bidat so ista golemina.
funkcijata od leste ti dava moznost da spois dve sortirani listi bez raslika na nivnata golemina.
inaku tocen tie kodot, naizmedicno od dvete listi dodavas element vo novata merged_list.

for i in range(len(list1)):
merged_list.append(list1)
merged_list.append(list2) /*greska ako len(list(2)) > len(list(1))*/
Не е точно и така, ако ја пушти како што си му пишал ќе направи листа од листи (2D), т.е форот ќе врти толку пати колку што ќе има елементи во листа 1 и целата листа ќе ја пикне во новата листа. Во конкретниот случај ќе му дојде: [[1, 3, 5], [1, 3, 5], [1, 3, 5]] на првиот append, и [[1, 3, 5], [2, 4, 6], [1, 3, 5], [2, 4, 6], [1, 3, 5], [2, 4, 6]] после вториот append.

Во случајов не е оптимално да го решава со фор циклуси, а веќе ако го решава ќе му требаат 2 различни, или уште полош код со 2 nested.

Алтернативно решение на тоа што му го пишав погоре би било со .extend().

Python:
list1 = [1, 3, 5]
list2 = [2, 4, 6]

merged_list = []

merged_list.extend(list1)

merged_list.extend(list2)

print(f"Spoena lista: {merged_list}")



Примерот од каде што гледал е различен, дечкото таму ја проширува листата 1 со елементите од листата 2, но не креира 3та листа.
 
Последно уредено:

Kajgana Shop

Back
На врв Bottom