본문 바로가기

FALL in/G.MA's 파이썬

[파이썬 Containers] - 리스트


리스트 (List) 

리스트는 파이썬의 배열이라고 보면 된다. 하지만 재크기 조정이 가능하고 다른타입의 원소를 가질수 있다.


>>> xs = [1,2,3] # 리스트를 초기화 한다. 

>>> print xs, xs[2] # xs리스트와 xs리스트의 2번째 인덱스 원소를 출력한다.

[1, 2, 3] 3


>>> print xs[-2] # xs리스트의 끝에서 두번째 원소를 출력한다.

2


>>> xs[2] = 'G.ma' # xs리스트의 2번째 인덱스에 3대신 'G.ma'를 넣는다.(다른타입 들어감)

>>> print xs

[1, 2, 'G.ma']


>>> xs.append('jiyeon') # xs리스트 마지막에 'jiyeon'을 추가해준다.(스택의 push와 비슷)

>>> print xs

[1, 2, 'G.ma', 'jiyeon']


>>> x = xs.pop() # xs리스트의 마지막원소를 제거하고 그 원소를 x에 넣는다.(스택의 pop과 비슷)

>>> print x, xs

jiyeon [1, 2, 'G.ma']


- 리스트 자르기 (list slicing)

>>> numbers = range(6) # 0~5까지 정수형 리스트를 만들어준다.

>>> print numbers

[0, 1, 2, 3, 4, 5]


>>> print numbers[2:5] # 2번째 인덱스 부터 5번앞 인덱스인 4번째 인덱스까지 출력한다.

[2, 3, 4]


>>> print numbers[2:] # 2번째 인덱스부터 끝까지 출력한다.

[2, 3, 4, 5]


>>> print numbers[:2] # 0번째 인덱스부터  두번째 인덱스 앞인 첫번째 인덱스까지 출력한다.

[0, 1]


>>> print numbers[:] # 전체 출력한다.

[0, 1, 2, 3, 4, 5]


>>> print numbers[:-2] # 처음(0번째 인덱스)부터 -2인덱스(4번째 인덱스)앞인 3번째 인덱스 까지 출력한다.

[0, 1, 2, 3]


>>> numbers[2:5] = [8,9,10] # 2번째 인덱스부터 4번째 인덱스까지를 8,9,10으로 대체한다.

>>> print numbers 

[0, 1, 8, 9, 10, 5]


- 리스트 루프 (list loops)

>>> fruits = ['apple','banana','grape']

>>> for fruit in fruits:

...     print fruit

... 

apple

banana

grape

# 과일리스트 안의 원소(fruit라 지정)를 하나씩 꺼내어 출력한다. 각각 다른 라인으로 출력된다.


>>> for idx, fruit in enumerate(fruits):

...     print '#%d: %s' % (idx + 1, fruit)

... 

#1: apple

#2: banana

#3: grape

enumerate()함수를 이용하여 리스트 인덱스에 접근가능하다.


- 리스트의 이해

>>> numbers = range(5)

>>> print numbers

[0, 1, 2, 3, 4]

>>> squares = [] 

>>> for x in numbers:

...     squares.append(x**3)

... 

>>> print squares

[0, 1, 8, 27, 64]

위 코드를 아래 코드로 더 간단히 만들수 있다. 


>>> squares2 = [x**3 for x in numbers]

>>> print squares2

[0, 1, 8, 27, 64]


>>> even_squares = [x**3 for x in numbers if x%2 == 0]

>>> print even_squares

[0, 8, 64]

또한 조건문도 넣을 수 있다.