์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„(25.12.01~)

[๊ฐœ๋…์ •๋ฆฌ] ๋ฆฌ์ŠคํŠธ ์Šฌ๋ผ์ด์‹ฑ([:]) / ์–•์€ ๋ณต์‚ฌ(Shallow Copy) vs ๊นŠ์€ ๋ณต์‚ฌ(Deep Copy)

0๏ธโƒฃ 2026. 1. 13. 23:10
a = [1, 2, 3]
b = a[:]
a[0] = 99
print(a, b)  # ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜จ๋‹ค

p = [1, 2, [3, 4]]
q = p[:]
p[2][0] = 999
print(p, q)  # ๋‘˜ ๋‹ค ๊ฐ™์ด ๋ฐ”๋€๋‹ค

๋‘ ์ฝ”๋“œ ๋ชจ๋‘ ์Šฌ๋ผ์ด์‹ฑ([:])์œผ๋กœ ๋ณต์‚ฌํ–ˆ๋Š”๋ฐ, ์™œ ๊ฒฐ๊ณผ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅผ๊นŒ?

์ด ๊ธ€์—์„œ๋Š” ์ด ์งˆ๋ฌธ ํ•˜๋‚˜๋กœ ์ด์–ด์ง€๋Š”

  • ๋ฆฌ์ŠคํŠธ ๋ณต์‚ฌ์˜ ์ง„์งœ ์˜๋ฏธ
  • ์–•์€ ๋ณต์‚ฌ(shallow copy)์™€ ๊นŠ์€ ๋ณต์‚ฌ(deep copy)
  • “๊ฒ‰์€ ๋ณต์‚ฌ๋๋Š”๋ฐ ์™œ ์•ˆ์ชฝ์€ ๊ฐ™์ด ๋ฐ”๋€Œ๋Š”์ง€”

๋ฅผ ๊ฐœ๋… ์ค‘์‹ฌ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.


1๏ธโƒฃ ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜์˜ ์ง„์งœ ์˜๋ฏธ: “๋ณต์‚ฌ”๊ฐ€ ์•„๋‹ˆ๋ผ “์ฐธ์กฐ”

ํŒŒ์ด์ฌ์—์„œ ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜๋Š”
๋ฆฌ์ŠคํŠธ ์ž์ฒด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ,
๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ๋Š” ์ฃผ์†Œ(์ฐธ์กฐ) ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

a = [1, 2, 3]
b = a

์ด๋•Œ:

  • a์™€ b๋Š” ๊ฐ™์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค
  • ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๊ฐ™์ด ๋ฐ”๋€๋‹ค

2๏ธโƒฃ ์Šฌ๋ผ์ด์‹ฑ([:])์€ ๋ฌด์—‡์„ ๋ณต์‚ฌํ• ๊นŒ?

a = [1, 2, 3]
b = a[:]

"a์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์™„์ „ํžˆ ๋ณต์‚ฌํ–ˆ๋‹ค"๋ผ๋Š” ๊ฑด ์˜คํ•ด!

์ •ํ™•ํ•œ ํ‘œํ˜„ = "์Šฌ๋ผ์ด์‹ฑ์€ ‘๋ฆฌ์ŠคํŠธ ๊ป๋ฐ๊ธฐ’๋งŒ ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค"


โญ๏ธ ์–•์€ ๋ณต์‚ฌ (Shallow Copy)

์Šฌ๋ผ์ด์‹ฑ([:])์€ ์–•์€ ๋ณต์‚ฌ๋‹ค.

  • ๋ฐ”๊นฅ ๋ฆฌ์ŠคํŠธ๋Š” ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค
  • ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ์š”์†Œ๋Š” ๊ทธ๋Œ€๋กœ ๊ณต์œ ํ•œ๋‹ค
p = [1, 2, [3, 4]]
q = p[:]
p[2][0] = 999
print(p, q)
  1. p[:]
    [1, 2] ๋ถ€๋ถ„: ๋ณต์‚ฌ / [3, 4] ๋ถ€๋ถ„: ๊ณต์œ 
  2. p[2][0] = 3 = 999
    ์ด ๋‚ด์šฉ์„ q์™€ P๊ฐ€ ๊ณต์œ ํ•จ
    • p์™€ q๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฆฌ์ŠคํŠธ
    • ํ•˜์ง€๋งŒ ๊ทธ ์•ˆ์— ์žˆ๋Š” [3, 4]๋Š” ๊ฐ™์€ ๊ฐ์ฒด

โญ๏ธ ๊นŠ์€ ๋ณต์‚ฌ (Deep Copy)

๋‚ด๋ถ€ ๊ฐ์ฒด๊นŒ์ง€ ์™„์ „ํžˆ ๋…๋ฆฝ์‹œํ‚ค๊ณ  ์‹ถ๋‹ค๋ฉด ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

import copy

q = copy.deepcopy(p)
  • ๊ฒ‰ ๋ฆฌ์ŠคํŠธ๋„ ์ƒˆ๋กœ ๋งŒ๋“ฆ
  • ์•ˆ์ชฝ ๋ฆฌ์ŠคํŠธ๋„ ์ „๋ถ€ ์ƒˆ๋กœ ๋งŒ๋“ฆ
  • ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๊ตฌ์กฐ → ์ด์ œ ํ•œ์ชฝ์„ ์ˆ˜์ •ํ•ด๋„ ๋‹ค๋ฅธ ์ชฝ์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

โœ… ์–ธ์ œ ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ• ๊นŒ?

  • ์ค‘์ฒฉ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ
  • ์›๋ณธ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ๊ฐ€ ์ค‘์š”ํ•  ๋•Œ
  • ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋•Œ
  • “๋ณต์‚ฌํ–ˆ๋Š”๋ฐ ์™œ ๊ฐ™์ด ๋ฐ”๋€Œ์ง€?”๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค ๋•Œ

๐Ÿ“Œ ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ

  • ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜๋Š” ๊ฐ’์„ ๋‹ด์ง€ ์•Š๊ณ  ์ฐธ์กฐ๋ฅผ ๋‹ด๋Š”๋‹ค
  • [:]๋Š” ๊ฒ‰๋งŒ ๋ณต์‚ฌํ•˜๋Š” ์–•์€ ๋ณต์‚ฌ๋‹ค
  • ๋ฆฌ์ŠคํŠธ ์•ˆ์— ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ๋‚ด๋ถ€๋Š” ๊ณต์œ ๋œ๋‹ค
  • ์™„์ „ํ•œ ๋…๋ฆฝ์ด ํ•„์š”ํ•˜๋ฉด ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์จ์•ผ ํ•œ๋‹ค