살아가는 이야기

Python 리스트 사용 팁 본문

컴퓨터, 풀어그림

Python 리스트 사용 팁

우균 2014. 10. 31. 09:44

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



Comments