πŸ” Как ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: простой способ ΠΈ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Python, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ copy() встроСнного модуля copy.


import copy

# Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
matrix_copy = copy.copy(matrix)

print(matrix_copy)
    

Ѐункция copy() создаСт ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚Π½ΡƒΡŽ копию ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Ссли ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ элСмСнты Π² ΠΊΠΎΠΏΠΈΠΈ, Ρ‚ΠΎ исходная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° останСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° глубокая копия, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ структуры, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ deepcopy() ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ модуля:


import copy

# Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
matrix_copy = copy.deepcopy(matrix)

print(matrix_copy)
    

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅?

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊ просто, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. ΠŸΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ простоС присваиваниС значСния Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΏΠΈΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы копирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ подходящий для Π²Π°ΡˆΠΈΡ… потрСбностСй.

1. ΠŸΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Shallow Copy)

ΠŸΡ€ΠΈ повСрхностном ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ссылки Π½Π° элСмСнты исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ элСмСнтов Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅, эти измСнСния Ρ‚Π°ΠΊΠΆΠ΅ отразятся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅.

import copy

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
shallow_copy = copy.copy(matrix)

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная shallow_copy содСрТит ссылку Π½Π° ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ matrix. Если ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· элСмСнтов Π² matrix, это Ρ‚Π°ΠΊΠΆΠ΅ отразится Π² shallow_copy.

matrix[0][0] = 0
print(shallow_copy)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚:

[[0, 2, 3], [4, 5, 6], [7, 8, 9]]

2. Π“Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Deep Copy)

Для создания ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, Π½Π΅ связанной с исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΌ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ копируСтся Π² Π½ΠΎΠ²ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ. Π­Ρ‚ΠΎ позволяСт нСзависимо ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ элСмСнты Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅.

import copy

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
deep_copy = copy.deepcopy(matrix)

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная deep_copy содСрТит ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ копию исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ matrix. Если ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· элСмСнтов Π² matrix, это Π½Π΅ повлияСт Π½Π° deep_copy.

matrix[0][0] = 0
print(deep_copy)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

3. Π‘Ρ€Π΅Π· (Slice)

Π‘Ρ€Π΅Π· - это Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСзы для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ списка, содСрТащСго элСмСнты исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ создаст ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ копию ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
sliced_copy = matrix[:] # ΠΈΠ»ΠΈ sliced_copy = matrix[::]

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная sliced_copy содСрТит копию исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ matrix. Если ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· элСмСнтов Π² matrix, это Π½Π΅ повлияСт Π½Π° sliced_copy.

matrix[0][0] = 0
print(sliced_copy)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

4. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка (List Comprehension)

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка - это ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ способ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ списка Π½Π° основС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ списка. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка для создания Π½ΠΎΠ²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, содСрТащСй элСмСнты исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
list_comprehension_copy = [[element for element in row] for row in matrix]

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная list_comprehension_copy содСрТит копию исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ matrix. Если ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· элСмСнтов Π² matrix, это Π½Π΅ повлияСт Π½Π° list_comprehension_copy.

matrix[0][0] = 0
print(list_comprehension_copy)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° ΠΏΠ°Π»ΡŒΡ†Π°Ρ…. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ Π² Python [ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° для машинного обучСния]

29 Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки Python

Python matrix #fyp #fypγ‚· #foryou #longervideos

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ isdigit Π² python? 🐍

Когда Python стал нСсовмСстимым с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ вСрсиями 🐍

πŸ”Ž Как Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ Π² строкС Python? Π•Π΄ΠΈΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹!

πŸ” Как ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: простой способ ΠΈ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ” Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅: Π»Π΅Π³ΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ успСху

πŸ”Ž Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ dict Π² Python: простой Π³Π°ΠΉΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как ΡƒΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π²ΡƒΠΊ python: простыС шаги для сниТСния громкости