и посмотреть медиа
Código en una sirena - Codificación Python
и посмотреть медиа
Canal sobre programación en Python y otros idiomas. Explicaciones y códigos simples.
Canal sobre programación en Python y otros idiomas. Explicaciones y códigos simples.
bot de IA para clonar texto a voz y voz en Telegram. Cree audio utilizando la red neuronal de forma rápida y fácil.
Recurso para aquellos interesados en la programación. Enfóquese en Python, pero también cubre otros temas.
Знаете ли вы, что [[]] * 3 в Python – это три ссылки на один список, а не три списка? Удобный способ создать матрицу нулей [[0] * 3] * 3 оборачивается ловушкой: одно изменение элемента меняет сразу все строки. Причина в том, что * на последовательности повторяет ссылки, а не копирует объекты. Внутренний список создается один раз, а внешнее умножение дает три ссылки на него. Классика – матрица 3×3: matrix = [[0] * 3] * 3 matrix[0][0] = 1 print(matrix) # [[1, 0, 0], [1, 0, 0], [1, 0, 0]] – здесь изменились все строки matrix[0], matrix[1] и matrix[2] – один и тот же объект. Запись в любой из рядов видна через остальные, потому что ряд по сути один. Проверить это можно через id(): rows = [[]] * 3 print(id(rows[0]) == id(rows[1]) == id(rows[2])) # True rows[0].append("a") print(rows) # [['a'], ['a'], ['a']] – один список под тремя именами Все три элемента указывают на один и тот же пустой список. append на любом из них дописывает в этот единственный список, и изменение видно через все остальные ссылки. Правильный способ – list comprehension, который создает новый объект на каждой итерации: matrix = [[0] * 3 for _ in range(3)] matrix[0][0] = 1 print(matrix) # [[1, 0, 0], [0, 0, 0], [0, 0, 0]] – так изменилась только первая строка Внутреннее [0] * 3 тоже умножение, но там оно безопасно: нули неизменяемы, и наличие тысячи ссылок на один и тот же 0 ничего не ломает. Проблема возникает только когда * повторяет ссылку на изменяемый объект – список, словарь, set. * на последовательности экономит память, повторяя ссылки. Для неизменяемых элементов это незаметно, для изменяемых – ломает изоляцию между "копиями". Вложенные структуры безопаснее создавать через list comprehension. В следующий вторник – + и reflected operators: как Python решает чей метод звать, когда складываются объекты разных типов, и при чем тут __radd__. Код на салфетке x Кусочки кода
Открыть канал и посмотреть медиаSolo los usuarios registrados pueden compartir su opinión.
¡Sé el primero en compartir tu experiencia con este recurso!