금주 얻은 내용을 정리해보자
비트연산자
~
비트연산자 NOT으로 이진수에서 각 비트를 반전시킨다.
-~n
이라고 하면 n-1
이 되고 ~-n
이면 n+1
이 된다.
List Comprehension
이는 파이썬에서 리스트를 간단하게 생성하는 방법주 ㅇ하나로 기존의 반복문과 조건문을 이용한 방법보다 더 간결하고 직관적인 코드를 만들게 해준다.
[표현식 for 항목 in iterable 객체 if 조건문]
으로 사용되는데
표현식
은 항목을 변환하고
iterable 객체
는 반복가능한 객체(List, Tuple, Dictionary, Set등의 데이터타입)
if조건문
은 선택적으로 사용할 수 있으며, 조건문
이 True
일 경우에만 표현식
이 실행된다.
Generator expression
이는 List Comprehension과 비슷하지만 []
대신 ()
을 사용하여 제너레이터 객체를 생성하는 것이다.
리스트 컴프리헨션과는 다르게 모든 값을 메모리에 미리 저장하지 않고 필요할 때마다 생성하기 때문에 메모리절약 측면에서 큰 이점을 제공한다.
이 표현식에는 for loop
와 같은 반복문에서 직접 사용될 수 있다.
sorted와 sort
모두 리스트를 정렬하는 함수이다.
sorted
는 기존 리스트를 변경하지 않고 새로운 정렬된 리스트를 반환한다.
형식은
sorted(iterable, key=None, reverse=False)
iterable
은 정렬하고자 하는 iterable 객체(리스트, 튜블등과 같은)
이며 key
는 정렬에 사용될 함수를 지정하는 매개변수, reverse
는 내림차순으로 정렬할지 여부를 지정하는 매개변수이다.
sort
는 원본리스트를 직접 정렬한다.
list.sort(key=None, reverse=False)
로 사용되는데 list
는 정렬하고자 하는 리스트 객체이고 나무지는 sorted
와 동일하게 동작한다.
이 둘의 차이는
예를들면
sorted_lst = sorted(lst)
print(sorted_lst) # [1, 2, 3]
print(lst) # [3, 2, 1] (변경되지 않음)
변경되지 않는 것이고
lst.sort()
print(lst) # [1, 2, 3] (원본 리스트가 변경됨)
이런식으로 변경되는 것이다.
rjust(width, fillchar), ljust(), zfill()
이 Method
는 문자열을 지정된 길이(width
)로 오른쪽 정렬하여 반환한다. 문자열의 길이가 width
보다 작다면 남은 공간을 fillchar
문자로 채운다.
이 때 fillchar
은 매개변수로 지정할 수 있다.
이와 비슷한 Method
로는 왼쪽정렬을 하는ljust()
와 가운데 정렬을 하는center()
, 그리고 zfill()
는 문자열이 지정된 길이보다 짧을 경우 왼쪽을 0으로 채운다.
s = 'Hello'
print(s.rjust(10)) # ' Hello'
print(s.rjust(10, '-')) # '-----Hello'
이런식으로 작동이 되는데 둘째줄에 '-'
를 넣었으므로 그 공백만큼 채워진 것이다. 여기선 공백표현이 안되네
zfill()
의 예를들면
s = '123'
s = s.zfill(5,'0')
print(s) # 출력 결과: '00123'
이런식으로 5자로 출력하는데 입력한 수가 '123'
세개이므로 나머지를 '0'
으로 채운 것이다.
이렇게 rjust()
처럼 fillchar
을 사용해서 지정할 수도 있다.
끝