알고 있는 내용을 정리하는 수준으로 블로그에 글을 적으려고 한다.
python 문법에 대한 2번째 내용이다.
모든 언어에서 제일 많이 사용하는 데이터 구조인 list. python에서 유용한 것들 정리해 보자.
정의 방법
# 빈 리스트 정의
my_list = []
my_list = list()
# 값과 함께 정의 (여러 데이터 타입들의 섞어서도 가능하다)
my_list1 = [1,2,3]
my_list2 = [“a”, “b”, “c”]
my_list3 = [“a”, 1, “python”, 5]
# list들의 list도 가능
my_nested_list = [my_list1, my_list2]
# list의 병합
combo_list = my_list1 + mylist2 # [1, 2, 3, “a”, “b”, “c”]
append(), extend(), insert()의 차이점
# append는 object를 맨 뒤에 추가한다.
x = [1, 2, 3]
x.append([4, 5]) # [1, 2, 3, [4, 5]]
# extend는 iterable 객체(리스트, 튜플, 딕셔너리 등)의 요소들을 list에 appending 시킨다.
y = [1, 2, 3]
y.extend([4, 5]) # [1, 2, 3, 4, 5]
# insert - 주어진 index에 값을 추가한다.
list = ['a', 'b', 'c’]
list.insert(0, 'x')
List slices
list = ['a', 'b', 'c', 'd']
print list[1:-1] ## ['b', 'c’]
list[0:2] = 'z' ## replace ['a', 'b'] with ['z']
print list ## ['z', 'c', 'd']
List 정렬
# 오름차순으로 정렬하기 (sorted의 기본이 오름차순)
a = [5, 1, 4, 3]
print sorted(a) ## [1, 3, 4, 5]
print a ## [5, 1, 4, 3]
# 내림차순으로 정렬하기
strs = ['aa', 'BB', 'zz', 'CC']
print sorted(strs) ## ['BB', 'CC', 'aa', 'zz'] (case sensitive)
print sorted(strs, reverse=True) ## ['zz', 'aa', 'CC', 'BB’]
# custom sorting key
# 1. len 함수를 통해 요소의 길이 순으로 정렬을 한다.
strs = ['ccc', 'aaaa', 'd', 'bb’]
print sorted(strs, key=len) ## ['d', 'bb', 'ccc', 'aaaa’]
# 새로운 함수를 만들어서 정렬 조건으로 활용.
# 맨 뒤 글자를 조건으로 정렬.
strs = ['xc', 'zb', 'yd' ,'wa']
def MyFn(s):
return s[-1]
print sorted(strs, key=MyFn) ## ['wa', 'zb', 'xc', 'yd’]
# 참고사항 - sort() 함수의 결과값은 None이다.
alist.sort() ## correct
alist = blist.sort() ## NO incorrect, sort() returns None
List Comprehensions
[ expr for var in list ] - for var in list
List 안에서 위와 같은 문법으로 for 문과 같은 동작을 수행 할 수 있다. 중첩으로도 가능하기 때문에 여러개의 for문을 쓸 코드를 간단히 작성할 수 있다.
개인적으로 python의 생산성이 높은 주요한 이유 중 하나라고 생각한다.
# 기본 동작
nums = [1,2,3,4]
squares = [ n * n for n in nums ] ## [1, 4, 9, 16]
# List Comprehensions 안에서 특정 함수의 호출도 가능하다.
strs = ['hello', 'and', 'goodbye']
shouting = [ s.upper() + '!!!' for s in strs ] ## ['HELLO!!!', 'AND!!!', 'GOODBYE!!!’]
# List에 if syntax를 적용하여 조건을 걸 수도 있다.
nums = [2, 8, 1, 6]
small = [ n for n in nums if n <= 2 ] ## [2, 1]
fruits = ['apple', 'cherry', 'bannana', 'lemon']
afruits = [ s.upper() for s in fruits if 'a' in s ] ## ['APPLE', 'BANNANA']
[참고]
반응형
'Language > python' 카테고리의 다른 글
[python] 상속 기본 및 factory method 패턴 정리 (0) | 2018.03.27 |
---|---|
Generators (제너레이터) (0) | 2017.04.12 |