살아가는 이야기
Python 리스트 사용 팁 본문
Python의 리스트는 매우 강력한 기능을 제공한다. 하지만 글쓴이를 포함하여 익숙하지 않은 사람들을 위해 여기 몇 가지 기능을 적어 둔다.
1. 리스트 생성
빈 리스트:
ns = []
정수 순열: [0,1,2,3,4]
ns = range(5) # Python 2.x
ns = list(range(5)) # Python 3.x
시작점 지정 정수 순열: [1,2,3,4,5]
ns = range(1,6) # Python 2.x
ns = list(range(1,6) # Python 3.x
2. 리스트 길이
len(ns)
3. 원소 검색
3이 ns에 있나 검사:
3 in ns
ns에서 첫 번째 3의 위치:
ns.index(3)
4. 원소 추가
ns에 7 추가:
ns.append(7)
ns의 맨 처음에 7 추가:
ns.insert(0, 7)
ns에 ns2의 모든 원소 추가:
ns.extend(ns2)
5. 원소 삭제
첫 번째 원소 삭제:
del ns[0]
마지막 원소 삭제:
del ns[-1]
마지막 원소를 삭제하는 다른 방법(마지막 원소를 반환함):
ns.pop()
i번째 원소를 삭제하는 다른 방법(i번째 원소를 반환함):
ns.pop(i)
첫 번째 나타나는 n 삭제:
ns.remove(n)
6. 리스트 병합
ns = ns1 + ns2 # ns는 새로운 리스트
7. 리스트 변형
리스트 정렬:
ns.sort()
리스트를 거꾸로:
ns.reverse()
8. 슬라이스
리스트의 일부를 취해 새로운 리스트를 만듦
ns[1:-2] # 길이가 2 이상인 리스트의 양쪽 끝 원소를 제외한 새로운 리스트
ns[:] # ns와 같은 새로운 리스트
9. 리스트 컴프리헨션
집합의 조건제시법과 유사한 형태. 리스트의 조건제시법이라고나 할까? 조건에 따라서 새로운 리스트를 생성함
생성기(generator) 이용:
ns2 = [2*n for n in range(5)] # 0이상의 짝수 다섯 개
여과기(filter) 이용:
ns3 = [m for m in ns if x == n] # ns에서 n을 모두 제거
ns4 = [n for n in range(10) if n%2 == 0] # 위 ns2와 같은 리스트
10. 고차함수
함수를 인수로 받는 함수를 고차함수라고 함
map: [1..10]의 원소들의 제곱 값 리스트
ns5 = map(lambda n: n*n, range(1,11)) # Python 2.x
ns5 = list(map(lambda n: n*n, range(1,11))) # Python 3.x
reduce: 제곱의 합
sos = reduce(lambda a,b: a+b, ns5) # Python 2.x
import functools # Python 3.x
sos = functools.reduce(lambda a,b: a+b, ns5) #
filter: 제곱 중 짝수들의 리스트(짝수 제곱의 리스트와 같음)
ns6 = filter(lambda n: n%2 == 0, ns5) # Python 2.x
ns6 = list(filter(lambda n: n%2 == 0, ns5)) # Python 3.x