SlideShare a Scribd company logo
1
▪ The R
Python Seminar : Mutable & Immutable
AGENDA
1. Immutable
2. Mutable
3. Collection Module
AGENDA
1. Immutable
2. Mutable
3. Collection Module
4
1.Immutable
Immutable
• Scala형 : None / str / float / bool
변하지 않는 자료형 : Immutable
< String >
• 다른 언어와 다르게 python은 char가 없다.
• String의 값을 바꾸는것은 불가능(Indexing은 가능)
• Tuples
• ()로 생성 / Comma로 item구분.
• 함수의 인자 및 Return값으로 활용.
• 함수의 일반 parameter로 활용(a, b)등
Immutable을 mutable로
바꾸기 위해서는?
• 1. Immutable한 자료형을 mutable로 바꿔준 후
• 2. 값을 수정.
• 3. Mutable한 자료형을 Immutable로 전환
Why Immutable?
• 변하지 않는 값이 필요하기때문이다.
< 함수의 return값, 단일 값(scala)…등 >
5
1.Immutable
String의 Slicing과 Tuple의 method
•String : HELLO
H E L L O
0 1 2 3 4
-4 -3 -2 -1
• HELLO[-3:-2] ? EL
•HELLO[:] ? HELLO
•HELLO[0:4:2] ? HL (start,end,by)
•Tuple? : ~개의 요소로된 집합
+로 tuple 이어붙이기 가능
< Tuple 값 분리 >
a,b,c = tuple (변수로 바로 값 할당)
a,b = b,a (변수 바꾸기 가능)
seq = [ (1,2,3) , (4,5,6), (7,8,9) ]
for a,b,c in seq:
print(a+b+c)
Print의 값은? 6 15 24
• Method : Count(Param) / in
6
1.Immutable
Immutable의 집합 : Zip
ZIP?
• 여러 개의 리스트나 튜플 또는 다른 순차 자료형을 서로 짝지어서 튜플의 리스트를 생성한다.
• 서로 다른 순차자료형(반복가능한 자료)만 가능하다.
• 튜플의 리스트이므로 immutable하다.
• 리스트를 김밥말아서 썰어넣는것이라고 생각하자!
Why Zip?
• Immutable 한 key-value pair를 활용할 수 있다. (dict우수)
7
1.Immutable
Frozen Set : Dictionary
Set과 Frozen Set?
- mutable : Set / immutable : Frozen Set
Immutable : Dictionaries
▪ Key – Value pair로 이루어진 자료구조
▪ { } 및 dict() 를 이용하여 구현한다.
▪ 생성방식이 다양함.
a = dict(A=1, B=-1); b= {‘A’ : 1, ‘Z’ : 1}
C= dict(zip( [‘A’,’B’], [1, -1]) ) … a==b==c True!
Python에서 제공하는 immutable 객체들의 모임
이 집합 역시 mutable과 immutable로 구분된다!
Methods
▪ Ddict1.keys()
▪ Dict2.values()
▪ Dict.clear()
▪ Dict.update( dictionaries )
▪ Dict.items() : key-value로 출력
▪ In
다음과 같이 삽입가능
Dict[‘keys’] = values
AGENDA
1. Immutable
2. Mutable
3. Collection Module
9
2.mutable
Mutable
• List
변하는 자료형 : Mutable
• []로 생성 및 Comma로 item구분
+로 리스트 이어붙이기 가능!
(단 이 경우 연산 비용이 크므로
[리스트를 새로생성하여 값을 복사함]
주로 <extend> 메소드를 많이 활용한다.)
• Method :
< append > < insert / remove > <pop> < in>
<sort> <extend>
• Byte arrays
• Byte로 된 array이다.
Why mutable?
• 변수가 있어야 코딩을하지!
10
2.mutable
Set : Set
Set과 Frozen Set?
- mutable : Set / immutable : Frozen Set
mutable : Set
▪ 유일한 원소만 담는 정렬되지 않은 자료형
▪ set() 를 이용하여 구현한다. {}로 표현
a =[1,2,3,1,2]; b= [2,3,4,5]
set( a+b)
{1,2,3,4,5}
Python에서 제공하는 immutable 객체들의 모임
이 집합 역시 mutable과 immutable로 구분된다!
Methods
▪ & , |, -, ^ (교, 합, 차, X-or)
== intersection, union, difference,
symmetric_difference
▪ Add / remove
▪ A.Issubset(B) / A.issuperset(B)
A가 B에 속하는지, A가 set B를 포함하는지 확인
11
List / dictionaries / set 내포
2.mutable
List [expr for val in collection (if condition)]
Dictionaries { key-expr : value-expr for val in collection (if condition) }
set { expr for value in collection (if condition}
•Dictionaries와 set은 { }. 로 감싸서 생성한다.
•한번에 조건에 맞는 list / dict / set을 생성함!!
•Python만의 강력한 장점중 하나!!
AGENDA
1. Immutable
2. Mutable
3. Collection Module
13
Collection Module
3.Collection Module
Collection Module?
• 앞서 소개한 기본자료구조를 확장한 것
• 효율성이 많이 개선된다.
• 소개할 종류
• namedtuple()
• Counter
• Chain map
• DefaultDict
Why CM?
• 기본 제공 자료구조의 확장.
How to call?
• Import collections
14
3.Collection Module
Named tuples / Counter
Named tuples?
Vision = namedtuple(‘Vision’, [‘left’, ‘right’] )
Vision = Vision(1.5, 1.2)
Vision.left?
Vision.right?
Vision[0]
Tuple은 기본적으로 immutable에 hash하지 않는다.
하지만, named tuple을 이용하여 임의로 구현가능!
Counter?
counter=list(collections.Counter(cntList).value
s())
counter[:] = [x - 1 for x in counter]
자료에 대해서 세어주는 collectio이다.
별거 아닌것 같지만, keys혹은 value만을 세기에
아주 유용함.
This is the End of
the Presentation

More Related Content

PPTX
Hacosa js study 7th
PDF
Javascript refactoring workshop
PDF
Haskell study 15
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
PDF
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
PDF
2024 State of Marketing Report – by Hubspot
Hacosa js study 7th
Javascript refactoring workshop
Haskell study 15
2024 Trend Updates: What Really Works In SEO & Content Marketing
Storytelling For The Web: Integrate Storytelling in your Design Process
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
How to Leverage AI to Boost Employee Wellness - Lydia Di Francesco - SocialHR...
2024 State of Marketing Report – by Hubspot
Ad

Python Mutable and immutable

  • 1. 1 ▪ The R Python Seminar : Mutable & Immutable
  • 4. 4 1.Immutable Immutable • Scala형 : None / str / float / bool 변하지 않는 자료형 : Immutable < String > • 다른 언어와 다르게 python은 char가 없다. • String의 값을 바꾸는것은 불가능(Indexing은 가능) • Tuples • ()로 생성 / Comma로 item구분. • 함수의 인자 및 Return값으로 활용. • 함수의 일반 parameter로 활용(a, b)등 Immutable을 mutable로 바꾸기 위해서는? • 1. Immutable한 자료형을 mutable로 바꿔준 후 • 2. 값을 수정. • 3. Mutable한 자료형을 Immutable로 전환 Why Immutable? • 변하지 않는 값이 필요하기때문이다. < 함수의 return값, 단일 값(scala)…등 >
  • 5. 5 1.Immutable String의 Slicing과 Tuple의 method •String : HELLO H E L L O 0 1 2 3 4 -4 -3 -2 -1 • HELLO[-3:-2] ? EL •HELLO[:] ? HELLO •HELLO[0:4:2] ? HL (start,end,by) •Tuple? : ~개의 요소로된 집합 +로 tuple 이어붙이기 가능 < Tuple 값 분리 > a,b,c = tuple (변수로 바로 값 할당) a,b = b,a (변수 바꾸기 가능) seq = [ (1,2,3) , (4,5,6), (7,8,9) ] for a,b,c in seq: print(a+b+c) Print의 값은? 6 15 24 • Method : Count(Param) / in
  • 6. 6 1.Immutable Immutable의 집합 : Zip ZIP? • 여러 개의 리스트나 튜플 또는 다른 순차 자료형을 서로 짝지어서 튜플의 리스트를 생성한다. • 서로 다른 순차자료형(반복가능한 자료)만 가능하다. • 튜플의 리스트이므로 immutable하다. • 리스트를 김밥말아서 썰어넣는것이라고 생각하자! Why Zip? • Immutable 한 key-value pair를 활용할 수 있다. (dict우수)
  • 7. 7 1.Immutable Frozen Set : Dictionary Set과 Frozen Set? - mutable : Set / immutable : Frozen Set Immutable : Dictionaries ▪ Key – Value pair로 이루어진 자료구조 ▪ { } 및 dict() 를 이용하여 구현한다. ▪ 생성방식이 다양함. a = dict(A=1, B=-1); b= {‘A’ : 1, ‘Z’ : 1} C= dict(zip( [‘A’,’B’], [1, -1]) ) … a==b==c True! Python에서 제공하는 immutable 객체들의 모임 이 집합 역시 mutable과 immutable로 구분된다! Methods ▪ Ddict1.keys() ▪ Dict2.values() ▪ Dict.clear() ▪ Dict.update( dictionaries ) ▪ Dict.items() : key-value로 출력 ▪ In 다음과 같이 삽입가능 Dict[‘keys’] = values
  • 9. 9 2.mutable Mutable • List 변하는 자료형 : Mutable • []로 생성 및 Comma로 item구분 +로 리스트 이어붙이기 가능! (단 이 경우 연산 비용이 크므로 [리스트를 새로생성하여 값을 복사함] 주로 <extend> 메소드를 많이 활용한다.) • Method : < append > < insert / remove > <pop> < in> <sort> <extend> • Byte arrays • Byte로 된 array이다. Why mutable? • 변수가 있어야 코딩을하지!
  • 10. 10 2.mutable Set : Set Set과 Frozen Set? - mutable : Set / immutable : Frozen Set mutable : Set ▪ 유일한 원소만 담는 정렬되지 않은 자료형 ▪ set() 를 이용하여 구현한다. {}로 표현 a =[1,2,3,1,2]; b= [2,3,4,5] set( a+b) {1,2,3,4,5} Python에서 제공하는 immutable 객체들의 모임 이 집합 역시 mutable과 immutable로 구분된다! Methods ▪ & , |, -, ^ (교, 합, 차, X-or) == intersection, union, difference, symmetric_difference ▪ Add / remove ▪ A.Issubset(B) / A.issuperset(B) A가 B에 속하는지, A가 set B를 포함하는지 확인
  • 11. 11 List / dictionaries / set 내포 2.mutable List [expr for val in collection (if condition)] Dictionaries { key-expr : value-expr for val in collection (if condition) } set { expr for value in collection (if condition} •Dictionaries와 set은 { }. 로 감싸서 생성한다. •한번에 조건에 맞는 list / dict / set을 생성함!! •Python만의 강력한 장점중 하나!!
  • 13. 13 Collection Module 3.Collection Module Collection Module? • 앞서 소개한 기본자료구조를 확장한 것 • 효율성이 많이 개선된다. • 소개할 종류 • namedtuple() • Counter • Chain map • DefaultDict Why CM? • 기본 제공 자료구조의 확장. How to call? • Import collections
  • 14. 14 3.Collection Module Named tuples / Counter Named tuples? Vision = namedtuple(‘Vision’, [‘left’, ‘right’] ) Vision = Vision(1.5, 1.2) Vision.left? Vision.right? Vision[0] Tuple은 기본적으로 immutable에 hash하지 않는다. 하지만, named tuple을 이용하여 임의로 구현가능! Counter? counter=list(collections.Counter(cntList).value s()) counter[:] = [x - 1 for x in counter] 자료에 대해서 세어주는 collectio이다. 별거 아닌것 같지만, keys혹은 value만을 세기에 아주 유용함.
  • 15. This is the End of the Presentation