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

Член од
16 јуни 2022
Мислења
11
Поени од реакции
0
Здраво таму,

Се обидувам да комбинирам две листи во 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, но не можев да го разберам. Што превидувам овде? Може ли некој да ми помогне да ја разберам и поправам оваа грешка?

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

Lester Freamon

A man of focus, commitment, sheer will...
Член од
14 јануари 2015
Мислења
15.969
Поени од реакции
35.927
Ако те разбирам сакаш да направиш 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)
 
Член од
28 март 2023
Мислења
640
Поени од реакции
1.004
Здраво таму,

Се обидувам да комбинирам две листи во 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))*/
 
Последно уредено:

Lester Freamon

A man of focus, commitment, sheer will...
Член од
14 јануари 2015
Мислења
15.969
Поени од реакции
35.927
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

На врв Bottom