Programming/Python
[PY4E] 파이썬 튜플; items() sorted() List comprehension
aram
2022. 7. 15. 23:24
1. 튜플Tuples & 리스트 Lists
- 튜플은 리스트와 비슷한 기능을 하는 스퀀스
- 0부터 시작하는 인덱스에 항목 저장
- 리스트 : [] 사용, 수정 가능
- 튜플 : () 사용, 수정 불가 > WHY? 효율성 때문 = 메모리 용량小, 성능 측면에서 훨씬 단순&효과적
2. 튜플 Tuples
= 제한있는 리스트
- 임시 변수를 선언할 때는 리스트를 쓰는 것보다 튜플을 쓰는 것이 좋음
- 좌변에 변수를 가진 채로 선언 가능
- 네임드 튜플 : 양변의 변수와 값의 수가 동일해야함.
- 여러개 데이터를 한번에 입력할 때는 () 괄호 생략 가능
- 부분 삭제 불가 / 전체 삭제만 가능
- 추가할 때는 += 사용
# 한 개만 있는 경우 , 로 마무리
tuple1 = (item,) # 이건 튜플
tuple2 = (item) # 이건 item의 type으로 인식
# 여러개 입력 시 () 생략 가능
tuple3 = 1,2,3,4 # (1,2,3,4)
# 데이터 추가
tuple3 += (55,) # (1, 2, 3, 4, 55)
tuple3 += ('test', 'sample') # (1, 2, 3, 4, 55, 'test', 'sample')
# 네임드 튜플 = 튜플 안에 변수 사용 가능
xy = (x, y) = (4, 'fred')
print(xy) # (4, 'fred')
print(y) # fred
# 문자열을 튜플로(리스트와 동일)
my_text = '가나다라마바사'
tuple(my_text) # ('가', '나', '다', '라', '마', '바', '사')
3. 튜플의 딕셔너리 활용
- items()는 튜플의 형태로 리턴
>>> d = dict()
>>> d['csev'] = 2
>>> d['cwen'] = 4
>>> for (k,v) in d.items()
... print(k, v)
...
csev 2
cwen 4
>>> tups = d.items()
>>> print(tups)
dict_items([('csev', 2), ('cwen', 4)]) #튜플형태
4. 튜플의 비교
: 여러값에 대해 비교 가능
단, 처음의 비교값으로 비교가 가능하다면 뒤의 요소 고려X
>>> (0, 1, 2000000) < (0, 3, 4) #1<3 이기때문에 true
True
>>> ( '강성', 'Jones', 'Sally' ) < ('Jones', 'Sam', 'Julian')
False # 한글 < 영어
5. 키를 기준으로 정렬 sorted()
- items() 메소드로 키와 값을 얻은 딕셔너리 정렬을 위해 튜플로 이루어진 Lists를 사용
- sorted() : 시퀀스를 인자로 받아 정렬된 시퀀스 반환
더보기
sort() : 리스트 그 자체를 순서대로 정렬 가능(문자열은 불가)
fname = input('Enter file: ')
if len(fname) < 1 : fname = 'clown.txt'
hand = open(fname)
di = dict()
for lin in hand:
lin = lin.rstrip()
wds = lin.split()
for w in wds:
di[w] = di.get(w,0) + 1
##########################################################################
tmp = list()
for k, v in di.items(): #튜플로 키와 값 분리
newt = (v, k) #키와 값의 위치 변경
tmp.append(newt)
#print('Flipped', tmp)
tmp = sorted(tmp, reverse=True) # 내림차순 정렬
#print('Sorted',tmp[:5]) #리스트 형태로 반환
#출력: Sorted [(7, 'the'), (3, 'car'), (3, 'and'), (2, 'tent'), (2, 'ran')]
##########################################################################
for v,k in tmp[:5]: #Top5만 출력
print(k,v)
#출력
#the 7
#car 3
#and 3
#tent 2
#ran 2
6. 리스트 컴프리헨션 List comprehension
: 동적인 리스트 생성
: 위 ##사이의 코드를 한줄로 짧게 가능
print(sorted([(v,k) for k,v in di.items()], reverse=True))
#출력: [(7, 'the'), (3, 'car'), (3, 'and'), (2, 'tent'), (2, 'ran'), (2, 'clown'), (1, 'on'), (1, 'into'), (1, 'fell'), (1, 'down'), (1, 'after')]
* 내용참고&출처 : 태그에서 수강한 수업을 복습 목적으로 정리한 내용입니다.
728x90