Small Grey Outline Pointer Python :: mutable / immutable
본문 바로가기
Dev./Python

Python :: mutable / immutable

by sso. 2022. 7. 26.

수정이 불가능한 객체 (immutable) : 튜플, 문자열

수정이 가능한 객체 (mutable) : 리스트

 

 

 

r = [1,2]
print(id(r))
r += [3, 4]
print(r)
print(id(r))

2432506958464

[1, 2, 3, 4]

2432506958464 //주소값이 같다

 

 

 

t = (1,2)
print(id(t))
t += (3,4)
print(t)
print(id(t))

2432505701312

(1, 2, 3, 4)

2432505844160 //주소값이 바뀜 

 

 

t1 = "홍"
t2 = "길"
t3 = "동"

t = t1 + t2 + t3
print(t)

t1 = t1 + t2 + t3 #새로운 값을 만들어서 저장한다 원본을 건드리지 않는다
print(t1)

홍길동

홍길동

 

 

 

list

def add_last(m,n):
    m += n
r = [1,2]
add_last(r, [3,4])

print(r)

[1, 2, 3, 4]

 

 

 

tuple

def add_last(m,n):
    m += n
t = (1,3)
add_last(t, (5,7))

print(t)

(1,3)

 

함수 실행이 끝나고 나면

t = (1,3)

m = (1,3,5,7) 이 되기 때문에 t는 (1,3) 이 저장되어 있다

immutable t의 값은 추가 되지 않음

 

 

 

 

tuple의 값을 바꾸려면

def add_last1(m,n):
    m += n
t1 = (1,3)
add_last1(t1,(5,7))
print(t1)


def add_last2(m,n):
    m += n
    return m
t2 = (1,3)
t2 = add_last2(t2, (5,7))
print(t2)

(1,3)

(1,3,5,7)

 

 

 

 

a = [1,2,3,4,5,6,7,8,9,10]
print(a[0], a[-1])

1 10

 

 

오름차순 sort()

a = []
a.append(1)
a.append(10)
a.append(25)
a.append(19)
a.append(40)
a.append(7)
print(a)
a.sort()
print(a)

 

[1, 10, 25, 19, 40, 7]

[1, 7, 10, 19, 25, 40]

 

 

 

 

l = [3,1,5,4,7,6]
def min_max(a):
    a.sort()
    print("최소값", a[0], "최대값", a[-1], sep=' ')

min_max(l)
print(l)

최소값 1 최대값 7

[1, 3, 4, 5, 6, 7] // 하지만 원본의 순서가 바뀌어 버렸다

 

 

 

 

위의 문제에서 원본을 변경시키지 않아야 한다

# %% 위의 문제에서 원본을 변경시키지 않아야 한다
a = [3,1,5,4,7,6]
c = (3,1,5,4,7,6)
def min_max(a):
    #a = [3,1,5,4,7,6]
    a=list(a)
    a.sort()
    print("최소값", a[0], "최대값", a[-1], sep=' ')

min_max(a)
min_max(c)
print(a)
print(c)

최소값 1 최대값 7

[3, 1, 5, 4, 7, 6]

(3, 1, 5, 4, 7, 6)

 

728x90

댓글