Как добавить список в другой список - PullRequest
1 голос
/ 23 сентября 2019

У меня есть функция с именем "организатор", которая принимает 2 значения: список и индекс (число), чтобы реорганизовать этот список, после чего он возвращает новый список.

Я хочу выполнить эту функцию 10Чтобы создать 10 списков и добавить эти списки в один список для последующего использования, программа выполняет это, однако повторяет последний список 10 раз, остальные списки не добавляет.

Я положилздесь используется функция «организатор», потому что я не могу найти, в чем заключается проблема, поэтому может потребоваться больше информации.Я использовал функцию печати вдоль функции, чтобы увидеть, где происходит сбой, и она создает списки по своему желанию, проблема в том, что после их создания он просто копирует последний созданный список столько раз, сколько продолжается цикл.Он берет полученный окончательный список и копирует его несколько раз

Вот код:

number_list = ["12","11","10","9","8","7","6","5","4","3","2","1"]    
indexes = [0,5,6,8,10,4,5,2,1,9]    

def organizer(list,index): # Takes a list and reorganize it by a number which is an index.    
    number1 = index - 1    
    count_to_add = -1    
    list_to_add = []    
    for item in range(number1):    
        count_to_add += 1    
        a = list[count_to_add]    
        list_to_add.append(a)    

    number2 = index - 1    
    for item1 in range(number2):    
        del list[0]    

    list.extend(list_to_add)    
    return list    


def lists_creator(list_indexes):  # Create a list of 10 lists ,with 12 elements each.    
    final_list = []
    count = -1

    for item in list_indexes:
        count += 1
        result = organizer(number_list, list_indexes[count])
        final_list.append(result)

    return final_list

final_output = lists_creator(indexes)
print(final_output)

Вот результат: (один и тот же список 10 раз)

[['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8'], ['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8'], ['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8'], ['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8'], ['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8'], ['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8'], ['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8'], ['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8'], ['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8'], ['7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8']]

Примечание: если я изменю строку 28 в функции list_creator

final_list.append(result)

для

final_list.extend(result)

, результат будет:

['12', '11', '10', '9', '8', '7', '6', '5', '4', '3', '2', '1', '8', '7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '3', '2', '1', '12', '11', '10', '9', '8', '7', '6', '5', '4', '8', '7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '11', '10', '9', '8', '7', '6', '5', '4', '3', '2', '1', '12', '8', '7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '4', '3', '2', '1', '12', '11', '10', '9', '8', '7', '6', '5', '3', '2', '1', '12', '11', '10', '9', '8', '7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8', '7', '6', '5', '4', '7', '6', '5', '4', '3', '2', '1', '12', '11', '10', '9', '8']

Что является результатом того, чтоЯ желаю, но это не группа списков.

Ответы [ 2 ]

1 голос
/ 23 сентября 2019
def lists_creator(list_indexes):  # Create a list of 10 lists ,with 12 elements each.
    final_list = []
    list = []

    for i in range(len(list_indexes)):
        result = organizer(number_list, list_indexes[i])
        list.extend(result)

    n = 0
    m = 12
    for n_times in range(len(list_indexes)):
        final_list.append(list[n:m])
        n = m
        m += 12

    return final_list
1 голос
/ 23 сентября 2019

вы используете один и тот же список каждый раз, так что результат состоит из фактически одного списка,

в вашем методе list_creator, вы должны дать методу organizer копию вашего исходного списка number_list, иначе вы просто снова и снова изменяете один и тот же список:

def lists_creator(list_indexes):  # Create a list of 10 lists ,with 12 elements each.    
    final_list = []
    count = -1

    for item in list_indexes:
        count += 1
        result = organizer(list(number_list), list_indexes[count])
        final_list.append(result)

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