Telegram Group & Telegram Channel
🐍 Хитрая задача на Python для опытных разработчиков

🔹 Уровень: Advanced
🔹 Темы: изменяемые объекты, ссылки, list multiplication, side effects

📌 Условие

Что выведет следующий код?


matrix = [[0] * 3] * 3

matrix[0][0] = 1

for row in matrix:
print(row)


Вопросы

1. Почему изменяется весь первый столбец, а не только [0][0]?
2. Как работает [[0]*3]*3 и почему это опасно?
3. Как правильно создать независимую матрицу 3×3 из нулей?

🔍 Разбор

Ожидаемый (и удивительный!) вывод:

[1, 0, 0]
[1, 0, 0]
[1, 0, 0]


🔧 Почему так происходит

- Выражение [[0] * 3] * 3 создаёт три ссылки на один и тот же вложенный список.
- matrix[0][0] = 1 меняет все строки, потому что они указывают на один и тот же объект в памяти.

⚠️ Подвох

Это один из самых частых скрытых багов в Python, особенно при создании вложенных списков.

🧠 Решение

Нужно использовать генератор списка, чтобы создать три независимых объекта:


matrix = [[0] * 3 for _ in range(3)]


Теперь matrix[0][0] = 1 затронет только первую строку:


[1, 0, 0]
[0, 0, 0]
[0, 0, 0]


📌 Всегда проверяй, создаёшь ли ты уникальные объекты, особенно если работаешь с вложенными структурами.



tg-me.com/pro_python_code/1811
Create:
Last Update:

🐍 Хитрая задача на Python для опытных разработчиков

🔹 Уровень: Advanced
🔹 Темы: изменяемые объекты, ссылки, list multiplication, side effects

📌 Условие

Что выведет следующий код?


matrix = [[0] * 3] * 3

matrix[0][0] = 1

for row in matrix:
print(row)


Вопросы

1. Почему изменяется весь первый столбец, а не только [0][0]?
2. Как работает [[0]*3]*3 и почему это опасно?
3. Как правильно создать независимую матрицу 3×3 из нулей?

🔍 Разбор

Ожидаемый (и удивительный!) вывод:

[1, 0, 0]
[1, 0, 0]
[1, 0, 0]


🔧 Почему так происходит

- Выражение [[0] * 3] * 3 создаёт три ссылки на один и тот же вложенный список.
- matrix[0][0] = 1 меняет все строки, потому что они указывают на один и тот же объект в памяти.

⚠️ Подвох

Это один из самых частых скрытых багов в Python, особенно при создании вложенных списков.

🧠 Решение

Нужно использовать генератор списка, чтобы создать три независимых объекта:


matrix = [[0] * 3 for _ in range(3)]


Теперь matrix[0][0] = 1 затронет только первую строку:


[1, 0, 0]
[0, 0, 0]
[0, 0, 0]


📌 Всегда проверяй, создаёшь ли ты уникальные объекты, особенно если работаешь с вложенными структурами.

BY Python RU


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/pro_python_code/1811

View MORE
Open in Telegram


Python RU Telegram | DID YOU KNOW?

Date: |

How To Find Channels On Telegram?

There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.

Unlimited members in Telegram group now

Telegram has made it easier for its users to communicate, as it has introduced a feature that allows more than 200,000 users in a group chat. However, if the users in a group chat move past 200,000, it changes into "Broadcast Group", but the feature comes with a restriction. Groups with close to 200k members can be converted to a Broadcast Group that allows unlimited members. Only admins can post in Broadcast Groups, but everyone can read along and participate in group Voice Chats," Telegram added.

Python RU from id


Telegram Python RU
FROM USA