Python [различие между повторной ссылкой и мутацией в функции]

Я боролся с тем, чтобы увидеть, как эти два блока кода не дают одинаковый вывод K (изменяет K так, что он содержит все строки s, изначально в K такие, что f (s) возвращает True, и никаких других элементов)

def f(s):
    return 'a' in s
K = ['a','b','a','c']
def satisfiesF(L):
ansList = []
for char in L:
    if f(char) == True:
        ansList += [char,]  
L = ansList
return len(L)

а также

def f(s):
    return 'a' in s
K = ['a','b','a','c']
def satisfiesF(L):
    ansList = []
    for char in L:
        if f(char) == True:
            ansList += [char,]    
    CloneL = L[:]
    for e in CloneL:
        if e not in ansList:
            L.remove(e)
    return len(L)

Когда я печатаю print K, первый блок дает:

['a','b','a','c']

в то время как второй блок дает:

['a','a']

что я и хочу Однако я пытаюсь понять механизм, в котором он дает такие ответы. Для меня это говорит, что я могу изменить / изменить вход функции, но я не могу просто переназначить свой ввод на то, что я хочу.

0 ответов

Другие вопросы по тегам