리스트는 여러 개의 객체를 하나로 묶는 데이터 형이다. (엄밀히 말하면 mutable sequence 형임) 기본적으로 대괄호 [..]를 이용하여 묶고자 하는 데이터들을 콤마(,)로 구별하여 나열한다. 보통은 같은 형의 데이터를 묶어서 많이 사용하지만 리스트의 요소는 서로 다른 데이터 형일 수 있다.
>>> la = [11, 22, 33] # 리스트를 생성하여 la 에 저장한다.>>> lb = [‘life’, ‘is’, ‘short’] # 문자열의 리스트>>> lc = [True, ‘hi’, 33.4, 2-3j]>>> ld = [] # empty list를 생성하여 lc에 저장 |
이 예제와 같이 리스트의 요소는 어떠한 자료형이라도 가능하다. 리스트 안에 리스트가 오는 것도 얼마든지 가능하다.
>>> le = [ [11,22], [33, 44, 55] ] |
이것을 중첩된 리스트라고 한다.
리스트를 만드는 또 다른 방법은 list comprehension 을 이용하는 것이다. 예를 들어서 제곱 수의 리스트틀 만든다고 가정하자. 다음과 같이 for 문을 이용할 수 도 있을 것이다.
>>> squares = []
|
하지만 이 방법은 변수 x가 생성되고 for 문이 종료된 후에도 변수 x 가 메모리에 남아 있게 된다. 좀 더 깔끔한 방법은 다음과 같이 map()과 익명 함수를 이용하는 것이다.
>>> squares = list(map(lambda x: x**2, range(10))) |
이것과 완전히 동일한 방법이 바로 다음과같은 list comprehension 이고 훨씬 더 간결하고 가독성이 높다.
>>> squares = [x**2 for x in range(10)]
|
일반적으로 다음과 같이 구성된다.
[ 표현식 for문 (for 문 | if 문)* ] |
예를 들어서 두 리스트 요소 중 다른 것들로만 조합하는 리스트는 다음과 같다.
>>> [(x,y) for x in [1,2,3] for y in [3,1,4] if x!=y]
|
이것은 다음 프로그램과 동일한 동작을 수행한다.
>>> combs = []
|
두 가지 경우에서 for 문과 if 문의 순서가 같다는 것을 알 수 있다.
표현식이 튜플일 경우 반드시 괄호로 묶어야 한다.
>>> [(x,x**2) for x in range(6)]
|
만약 다음과 같이 괄호를 생략하면 에러가 발생한다.
>>> [ x,x**2 for x in range(6)] # 에러 발생 |
여기서 소개한 내용이 리스트를 생성하는 기본적인 방법들이다.
댓글 없음:
댓글 쓰기