Проблема понимания цикла. Python

Почему при очистке tmp, он удаляется и в result? В result должны быть списки подстрок без повторяющихся символов.

def lengthOfLongestSubstring(s):
    tmp = []
    result = []
    index = 0
    for i in s:
        if i not in tmp:
           tmp.append(i)
           continue
        result.append(tmp)
        tmp.clear()
    return result
print(lengthOfLongestSubstring('pwwkew'))

Ответы (1 шт):

Автор решения: CrazyElf

Потому что не нужно использовать метод tmp.clear() не понимая чётко что вы делаете. Используйте вместо этого tmp = [] как и в коде выше.

result.append(tmp) добавляет ссылку на tmp, и когда вы пишете tmp.clear(), то происходит то, что вы видите - очищаются все добавленные списки, потому что вы добавили в result много копий одного и того же списка. А когда вы пишете tmp = [], вы создаёте новый пустой список, не зависимый от других списков.

→ Ссылка