Может кто-нибудь объяснить, как .extend () работает в этом примере? - PullRequest
0 голосов
/ 08 июля 2019

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

def foo(i: int, lst: list): -> list
    [i].extend(lst) #nothing happens
    ([i]).extend(lst) #nothing happens
    (list((i,i)).extend(lst) #nothing happens
    var_list = [2,2]    
    new_lst_3 = var_list.extend(lst) # this works

Моя теория состоит в том, что некоторые из этих методов списка работают только с аргументами, если переменная указывает на список типов, потому что они не возвращают значение. Так как указатель будет на список, метод list может затем правильно изменить значение, на которое указывает указатель.

Возможно, я совершенно не в курсе, но любые разъяснения по этому поводу были бы по-настоящему оценены. Спасибо.

Ответы [ 2 ]

2 голосов
/ 08 июля 2019

Метод extend(), с которым вы работаете , изменяет список, к которому он вызывается. Что-то происходит в каждой из строк, которые вы прокомментировали; выгода в том, что в первых трех строках вы отбрасываете результаты.

[i].extend(lst)  # Creates a temporary list [i], adds the elements of lst, and 
                 # then... the list disappears because it's not assigned to a variable
([i]).extend(lst)  # Ditto
(list((i,i)).extend(lst)  # Same again

var_list = [2,2]    
new_lst_3 = var_list.extend(lst) # Adds the elements of lst to var_list, and you can see the changes
1 голос
/ 08 июля 2019

Вот пример использования extend. Таким образом, идея в том, что у вас есть список, и вы хотите добавить (расширить) другой список в исходный список. Звонок на extend возврат отсутствует

lst = [1,2]
lst.extend([3,4])
print(lst)

выход

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