๐ŸŸช Backend-Java

11. ์–•์€ ๋ณต์‚ฌ, ๊นŠ์€ ๋ณต์‚ฌ์˜ ํŠน์ง•๊ณผ ์˜ˆ์‹œ

ramen2 2024. 7. 11. 19:14
๋ฐ˜์‘ํ˜•

โœ…  ์–•์€ ๋ณต์‚ฌ

  • ์–•์€ ๋ณต์‚ฌ๋Š” ์›๋ณธ ๊ฐ์ฒด์˜ ์ฐธ์กฐ๋งŒ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•. ์ฆ‰, ์›๋ณธ ๊ฐ์ฒด์™€ ๋ณต์‚ฌ๋œ ๊ฐ์ฒด๋Š” ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐ
  • ์›๋ณธ ๊ฐ์ฒด์™€ ๋ณต์‚ฌ๋œ ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ, ํ•˜๋‚˜์˜ ๊ฐ์ฒด์—์„œ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค๋ฅธ ๊ฐ์ฒด์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์นจ.
  • 1์ฐจ์› ๋ฐฐ์—ด์—์„œ๋Š” ์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ์˜ ์ฐจ์ด๊ฐ€ ํฌ์ง€ ์•Š์Œ.
  • ๋‹ค์ฐจ์› ๋ฐฐ์—ด์—์„œ๋Š” ์–•์€ ๋ณต์‚ฌ๋กœ ์ธํ•ด ๋‚ด๋ถ€ ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ๊ณต์œ ๋จ.
import copy

# ์›๋ณธ ๋ฆฌ์ŠคํŠธ
original_list = [1, 2, [3, 4]]

# ์–•์€ ๋ณต์‚ฌ
shallow_copied_list = copy.copy(original_list)

# ์›๋ณธ ๋ฆฌ์ŠคํŠธ์™€ ์–•์€ ๋ณต์‚ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅ
print(original_list)       # ์ถœ๋ ฅ: [1, 2, [3, 4]]
print(shallow_copied_list) # ์ถœ๋ ฅ: [1, 2, [3, 4]]

# ์›๋ณธ ๋ฆฌ์ŠคํŠธ์˜ ๋‚ด๋ถ€ ๋ฆฌ์ŠคํŠธ ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝ
original_list[2][0] = 99

# ์›๋ณธ ๋ฆฌ์ŠคํŠธ์™€ ์–•์€ ๋ณต์‚ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์ถœ๋ ฅ
print(original_list)       # ์ถœ๋ ฅ: [1, 2, [99, 4]]
print(shallow_copied_list) # ์ถœ๋ ฅ: [1, 2, [99, 4]]

 

 

 

โœ…  ๊นŠ์€ ๋ณต์‚ฌ

  • ๊นŠ์€ ๋ณต์‚ฌ๋Š” ์›๋ณธ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ณต์‚ฌํ•˜์—ฌ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•. ์ฆ‰, ์›๋ณธ ๊ฐ์ฒด์™€ ๋ณต์‚ฌ๋œ ๊ฐ์ฒด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐ
  • ์›๋ณธ ๊ฐ์ฒด์™€ ๋ณต์‚ฌ๋œ ๊ฐ์ฒด๊ฐ€ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ด๋ฏ€๋กœ, ํ•˜๋‚˜์˜ ๊ฐ์ฒด์—์„œ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•ด๋„ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ.
  • ๋‹ค์ฐจ์› ๋ฐฐ์—ด์—์„œ๋„ ๊ฐ ์ฐจ์›์˜ ์š”์†Œ๋“ค์ด ๋ชจ๋‘ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณต์‚ฌ๋จ.
import copy

# ์›๋ณธ ๋ฆฌ์ŠคํŠธ
original_list = [1, 2, [3, 4]]

# ๊นŠ์€ ๋ณต์‚ฌ
deep_copied_list = copy.deepcopy(original_list)

# ์›๋ณธ ๋ฆฌ์ŠคํŠธ์™€ ๊นŠ์€ ๋ณต์‚ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅ
print(original_list)       # ์ถœ๋ ฅ: [1, 2, [3, 4]]
print(deep_copied_list)    # ์ถœ๋ ฅ: [1, 2, [3, 4]]

# ์›๋ณธ ๋ฆฌ์ŠคํŠธ์˜ ๋‚ด๋ถ€ ๋ฆฌ์ŠคํŠธ ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝ
original_list[2][0] = 99

# ์›๋ณธ ๋ฆฌ์ŠคํŠธ์™€ ๊นŠ์€ ๋ณต์‚ฌ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์ถœ๋ ฅ
print(original_list)       # ์ถœ๋ ฅ: [1, 2, [99, 4]]
print(deep_copied_list)    # ์ถœ๋ ฅ: [1, 2, [3, 4]]

 

 

 

โœ๏ธ  ํ•œ ์ค„ ์ •๋ฆฌ

 

  • ์–•์€ ๋ณต์‚ฌ: ์›๋ณธ ๊ฐ์ฒด์˜ ์ฐธ์กฐ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ. ์˜ˆ: copy.copy(original_list)
    • ์›๋ณธ ๊ฐ์ฒด์™€ ๋ณต์‚ฌ๋œ ๊ฐ์ฒด๊ฐ€ ๋™์ผํ•œ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง.
    • ๋‹ค์ฐจ์› ๋ฐฐ์—ด์—์„œ ๋‚ด๋ถ€ ์š”์†Œ๊ฐ€ ๊ณต์œ ๋จ.
  • ๊นŠ์€ ๋ณต์‚ฌ: ์›๋ณธ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ. ์˜ˆ: copy.deepcopy(original_list)
    • ์›๋ณธ ๊ฐ์ฒด์™€ ๋ณต์‚ฌ๋œ ๊ฐ์ฒด๊ฐ€ ๋…๋ฆฝ์ ์ž„.
    • ๋‹ค์ฐจ์› ๋ฐฐ์—ด์—์„œ ๊ฐ ์ฐจ์›์˜ ์š”์†Œ๋“ค์ด ๋ชจ๋‘ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณต์‚ฌ๋จ.

 

์–•์€ ๋ณต์‚ฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์›๋ณธ๊ณผ ๋ณต์‚ฌ๋ณธ ๊ฐ„์˜ ๊ฐ„์„ญ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.
๋ฐ˜๋ฉด, ๊นŠ์€ ๋ณต์‚ฌ๋Š” ์›๋ณธ๊ณผ ๋ณต์‚ฌ๋ณธ์ด ๋…๋ฆฝ์ ์ด์ง€๋งŒ, ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ์™€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•จ.

 

 

 

 

๋ฐ˜์‘ํ˜•