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만을 세기에
아주 유용함.