o
mutable 변경 가능한 값
-> list, set, dict
immutable 변경 불가능한 값
-> str, int, float, type
o 리스트 자료형
- 초기화 [ , , ]
- list() or list[]
- index는 0부터
- indexing 양의 정수 + -> 왼쪽 부터
음의 정수 - -> 오른쪽 부터
음의 정수 - -> 오른쪽 부터
ex) a = [1,2,3,4,5,6,7]
a[3]=4, a[-1]=7, a[1:3]=(2,3)
o 배열 초기화
1차원 n, arr[] => arr=[0]*(n+1)
2차원 n*m, arr[][] => arr=[[0]*m for _ in range(n)]
o 리스트 추가
a.append(c)
a,sort(reverse=True)
a.reverse
a.remove('a') ==> 리턴값은 가까운 index
a.count('a') ==> 'a'의 개수
a.add(c)
a.update(c)
a.index('a') ==> 리턴값은 가까운 index
- list를 문자열로
arr=['a','b',1,2]
str1=' '.join(arr) -> a b 1 2
str2='\'.join(arr) -> a/b/1/2
if arr1=['a','b',1,2,3]
str3=' '.join(str(s) for s in arr1)
==> 모든 값을 스트링으로
- list 합치기
1) +
2) extend
3) sum
1) +
a+b
2) extend
a=extend(b) -> a+b
b=extend(a) -> b+a
3) sum
k=[[1,2],[3,4]],[5,6]]
sum(k, []) = [1,2,3,4,5,6]
o tuple 자료형
- list와 유사
- 내부 변수는 변경 안됨
- list=[], tuple=()
- 값에따라...
tuple=()
tuple=(5,) --> 하나면 꼭 뒤에 ,를 넣는다
tuple=(3,4,5)
- 중복 안됨
==> list에 비해 공간 효율적이나, 기능이 제한됨
==> 최단 경로 찾을 때, Tuple 사용 ( Memory 최적화시, Hashing Key 사용시)
- tuple 관리
1) indexing --> 출력때 사용
tuple(start : end: rule)
2) len(tuple) : 길이
3) t1+t2
4) t1*2
t1*10
5) if 'a' in tuple
6) t.count('a')
7) 괄호 생략 가능 ({ })
a=3,4,5
8) 값을 swap
a1, a2 = (1,2)
b2, b1=a1, a2 =(2,1)
9) type 변환
a1 ={'kim : 1','lee: 2','park:3}
t1= tuple(d1)
->('kim,'lee','park')
t2=tuple(d1.values)
-> (1,2,3)
o dict 자료형
: key와 value로 구성되어 있음 {'사과':'Apple', '바나나':'Banana'}
dict={key:value}
data= dict()으로 먼저 선언
key_list=data.keys()
value_list=data.values()
dict.items()
dict.keys()
dict.values()
- dict value로 정렬하기
key=lambda item : item[0]
sorted_dict=sorted(my_dict.items())
==>
=sorted(my_dict.items(), key=lambda item : item[0], reverse=True)
*key는 sorted(dict.keys())로 가능함
==> key는 중복이 안되므로 신중하게! ex) score의 경우, key에 이름을 넣어야함. 점수를 넣으면 안됨
- del dict['a'] => 'a' key와 value값 모두 페어로 지움
o Set(집합) 자료형
- 중복 허용 x
- set() or set{()}
- list, tuple의 index값이 사용안됨
-> 중복이 안되는 장점에 list를 set으로 바꾸면 중복 없어짐......
a=[1,2,2,3,4,5,5,7,7,7]
set(a)=>(1,2,3,4,5,7)
1) 교집합
print(a1&a2)
2) 합집합
print(a|b)
3) 차집합
print(a1-a2)
4) 집합이 같은지
a1.isdisjoint(a2)
5) 부분집합여부
a1=issubset(a2)
- set 관련 함수
1) s.add('ab')
2) s.update(val) --> val을 배열로 만들어 한번에 처리 가능
3) s.remove('a') -> 리턴은 'a'가 있으면 삭제, 없으면 오류!!!!
4) s.discard(3) --> 리턴값은 3이 있으면 삭제 없으면 no action!!
5) s.pop() ->오른쪽부터 사라짐
s.popleft() -> 왼쪽부터 사라짐
6) s.clear() -> 모두 사라짐
7) in : 내부 요소 확인
if 1 in str:
8)
set(a1) -> 중복 제거
tuple(a1) -> 다시 tuple 형으로