관리 메뉴

2. 파이썬(Python) 리스트(List) 본문

Python/Python 기본 개념

2. 파이썬(Python) 리스트(List)

ª_ª 2017. 8. 2. 10:04
728x90
반응형


리스트(List)?

리스트는 숫자와 문자열만으로는 표현할 수 있는 부분의 한계가 존재해서 그 부분을 보안하기 위해 만든 것입니다.

 

1. 리스트 문법

리스트 명 = [1, 2, 3, ...]

 

예제

>>> a = []

>>> a

[]

 

>>> a = list()

>>> a

[]

 

* 비어있는 리스트를 표현할 때는 list()를 쓰기도 합니다.

 

>>> b = [1,3,5,7]

>>> b

[1, 3, 5, 7]

 

>>> c = ['Hello', 'World']

>>> c

['Hello', 'World']

 

>>> d = [1, 2, 'Hello', 'World']

>>> d

[1, 2, 'Hello', 'World']

 

리스트는 a처럼 아무것도 없는 비어 있는 리스트([ ])로 표현할 수 있고 b처럼 숫자를 가지고 있을 수 있고 c처럼 문자열을 가질 수 있고 d처럼 숫자와 문자열을 같이 가질 수도 있습니다.

 

2. 리스트의 인덱싱(Indexing) 및 슬라이싱(Slicing)

리스트도 문자열처럼 인덱싱과 슬라이싱이 가능합니다. 인덱싱(Indexing)은 무엇인가 가르킨다라는 의미이고 슬라이싱(Slicing)은 무엇인가 잘라낸다라는 의미입니다.

 

2_1. 리스트의 인덱싱(Indexing) 사용하기

>>> a = [1,3,5]

>>> a

[1, 3, 5]

>>> a[0] # a[0]는 문자열에서 사용했던 것처럼 첫 번째 값을 가져옵니다.

1

>>> a[0] + a[2] # a[0]의 값(1)a[2]의 값(5)을 가져와서 합을 구합니다.

6

>>> a[-1] # a의 마지막 값을 가져 옵니다.

5

 

리스트도 문자열처럼 a[0]가 첫 번째 값을 가르키는 것을 기억해야 합니다. a[1]은 두 번째 값입니다.

 

>>> a = [1,3,['a','b']]

>>> a[0]

1

>>> a[1]

3

>>> a[2]

['a', 'b']

>>> a[3]

Traceback (most recent call last):

File "<pyshell#26>", line 1, in <module>

a[3]

IndexError: list index out of range

>>> a[-1]

['a', 'b']

 

a = [1,3,[‘a’,‘b’]]는 리스트안에 또 다른 리스트를 가지고 있습니다. 그래서 a[-1]을 하면 ‘b’가 아니라 [‘a’,‘b’]의 리스트가 하나로 나오게 됩니다. a[2]a[-1]은 같은 부분을 가리키고 있기 때문에 같은 값이 나옵니다.

 

그렇다면 하나 궁금증이 생기는데 리스트 a에 포함된 [‘a’,‘b’] 또 하나의 리스트에서 ‘a’‘b’의 값은 인덱싱 할 수 없을까요?

 

2_1_1. 이중 리스트 인덱싱 하기

>>> a[2][0]

'a'

>>> a[2][1]

'b'

>>> a[-1][0]

'a'

>>> a[-1][1]

'b’

이렇게 2번째 리스트에 접근하기 위해서는 [][0] 또는 [][1]을 입력합니다.

 

2_1_2. 삼중 리스트 인덱싱 하기

>>> a = [1,2,['a','b',["hi","hello"]]]

>>> a

[1, 2, ['a', 'b', ['hi', 'hello']]]

>>> a[2][2][0]

'hi'

>>> a[2][2][1]

'hello'

>>> a[-1]

['a', 'b', ['hi', 'hello']]

>>> a[-1][-1][0]

'hi'

>>> a[-1][-1][1]

'hello'

 

이렇게 대괄호[]를 하나씩 추가시켜 주면 됩니다.

 

2_2. 리스트의 슬라이싱(Slicing) 사용하기


리스트 슬라이싱

문자열 슬라이싱

>>> a = [1,3,5]

>>> a[0:2]

[1, 3]

>>> a = "135"

>>> a[0:2]

'13'




 

리스트 슬라이싱과 문자열 슬라이싱을 비교하면 선언할 때 대괄호와 큰따옴표의 차이만 있을 뿐 사용 방법은 동일합니다.

 

예제)

>>> a = [1,3,5,7,9]

>>> b = a[3:]

>>> c = a[:3]

>>> a,b,c

([1, 3, 5, 7, 9], [7, 9], [1, 3, 5])

 

2_2_1. 이중 리스트 슬라이싱 하기

>>> a = [1,2,['a','b']]

>>> a[1:]

[2, ['a', 'b']]

>>> a[2][0:]

['a', 'b']

>>> a[2][1:]

['b']

 

슬라이싱도 접근하는 방법은 인덱싱처럼 대괄호([])를 늘리면 됩니다.

 

2_2_2. 삼중 리스트 슬라이싱 하기

>>> a = [1,2,['a','b',['hi','bye']]]

>>> a[2][0:]

['a', 'b', ['hi', 'bye']]

>>> a[2][1:]

['b', ['hi', 'bye']]

>>> a[2][2:]

[['hi', 'bye']]

>>> a[2][3:]

[]

>>> a[2][2][0:]

['hi', 'bye']

>>> a[2][2][1:]

['bye']

 

3. 리스트 연산자

리스트 연산자는 ‘+’(더하기)‘*’(반복하기)를 사용할 수 있습니다.

 

3.1 리스트 (+) 연산자

>>> a = [1, 3, 5]

>>> b = [2, 6, 8]

>>> c = a + b

>>> c

[1, 3, 5, 2, 6, 8]

 

리스트에서 ‘+’2개의 리스트의 값을 더하는 것이 아니라 리스트와 리스트를 합치는(더하는) 기능을 합니다. 문자열에서 “ab” + “cd”= “abcd”와 같은 원리입니다.

 

3.2 리스트 (*) 연산자

>>> a = [1,3,5]

>>> a * 3

[1, 3, 5, 1, 3, 5, 1, 3, 5]

 

리스트에서 ‘*’‘*’뒤에 있는 숫자만큼 반복되어 새로운 리스트를 만들어 냅니다. 문자열에서 “ab”*3 =“ababab”와 같은 원리입니다.


4. 리스트의 값 변경, 삭제하기


4.1 리스트에서 하나의 값 변경

>>> a = [1, 3, 5]

>>> a

[1, 3, 5]

>>> a[1] = 7

>>> a

[1, 7, 5]

 

a2번째 값을 7로 변경했습니다.

 

4.2 리스트에서 하나의 값을 여러 개의 값으로 변경


a[1:2]

a[1]

>>> a = [1, 7, 5]

>>> a

[1, 7, 5]

>>> a[1:2] = ['a','b','c']

>>> a

[1, 'a', 'b', 'c', 5]

>>> a = [1, 7, 5]

>>> a

[1, 7, 5]

>>> a[1] = ['a','b','c']

>>> a

[1, ['a', 'b', 'c'], 5]

 


위에 표를 보시면 a[1:2]a[1]의 결과 값이 다른 것을 확인 할 수 있습니다.

첫 번째 a[1:2](1<= a <2) a[1]a[2]까지를 말하는데 a[2]는 포함하지 않습니다. 따라서 a = [1, 7, 5]의 값 중 a[1]7만을 의미합니다. (, 1<= a <2 이 수식에 만족하는 사이의 값을 변경합니다.)

두 번째 a[1]은 사이의 값이 아니라 리스트 a의 두 번째 값을 변경하는 것입니다.

 

4.3 리스트 삭제하기([])

>>> a = [1, 3, 7]

>>> a[1:2] = []

>>> a

[1, 7]

 

리스트에 ([])를 입력하면 해당 부분의 값을 삭제합니다.

 

4.4 함수를 이용해서 리스트 삭제하기(del)

>>> a = [1,3,5,7,9]

>>> a

[1, 3, 5, 7, 9]

>>> del a[3]

>>> a

[1, 3, 5, 9]


a[3]7을 삭제합니다.

 

5. 리스트 관련 함수

문자열과 마찬가지로 리스트도 변수 이름 뒤에 마침표(.)를 붙인 다음에 함수 이름을 사용하면 됩니다.

 

5_1. 리스트에 값 추가1 (append)

>>> a = [1, 5, 7]

>>> a.append(2)

>>> a

[1, 5, 7, 2]

 

.append(x)는 리스트 맨 마지막에 x의 값을 추가합니다.

 

5_1_1. 리스트에 리스트 추가

>>> a

[1, 5, 7, 2]

>>> a.append([1,2])

>>> a

[1, 5, 7, 2, [1, 2]]

 

함수를 이용해서 리스트도 추가할 수 있습니다.

 

5_2. 리스트 정렬 (sort)

>>> a = [9, 2, 3, 1, 0]

>>> a

[9, 2, 3, 1, 0]

>>> a.sort()

>>> a

[0, 1, 2, 3, 9]

 

sort는 리스트의 값들은 오름차순으로 정렬해주는 역할을 합니다.

 

5_2_1. 리스트 알파벳 정렬

>>> a = ['i','h']

>>> a

['i', 'h']

>>> a.sort()

>>> a

['h', 'i']

 

5_3. 리스트 뒤집기 (reverse)

>>> a = [1, 3, 7, 5]

>>> a

[1, 3, 7, 5]

>>> a.reverse()

>>> a

[5, 7, 3, 1]

 

reverse() 함수는 리스트의 값을 거꾸로(반대로) 뒤집는 함수입니다.

 

5_4 위치 반환 (index)

>>> a

[5, 7, 3, 1]

>>> a.index(1)

3

>>> a.index(7)

1

>>> a.index(2)

Traceback (most recent call last):

File "<pyshell#6>", line 1, in <module>

a.index(2)

ValueError: 2 is not in list

 

index(x)함수는 x값을 입력하면 해당 리스트에 x값이 존재하면 존재하는 부분의 위치를 알려줍니다. 존재하지 않으면 위와 같이 에러 코드를 발생 시킵니다.

 

5_5. 리스트에 값 추가2 (insert)

>>> a = [1,2,3,4,5]

>>> a

[1, 2, 3, 4, 5]

>>> a.insert(2,7)

>>> a

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

 

append() 함수처럼 값을 추가하지만 insert는 자기가 원하는 위치에 값을 추가(삽입) 할 수 있습니다. insert(x, y) x는 추가할 위치 y는 추가할 값입니다.

 

5_6. 리스트에 값 삭제 (remove)

>>> a

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

>>> a.remove(7)

>>> a

[1, 2, 3, 4, 5]

 

remove(x)함수는 리스트에서 x를 삭제하는 함수입니다. (, x값이 중복 되면 첫 번째만 삭제합니다.)

 

5_6. 리스트에 포함된 값 개수 세기 (count)

>>> a = [1, 1, 2, 3, 4, 1]

>>> a

[1, 1, 2, 3, 4, 1]

>>> a.count(1)

3

 

count(x)는 리스트 안에 x의 개수를 구합니다.


리스트 함수 정리 

함수

설명

append(x)

x의 값을 마지막에 추가

sort()

오름차순으로 정렬

reverse

리스트의 값을 역순으로 변경

index(x)

x라는 값이 존재하면 위치 반환

insert(x,y)

리스트 x위치에 y값 추가

remove(x)

리스트 x값 삭제

count(x)

리스트 x개수 반환



리스트, 튜플, 딕셔너리 연습문제 풀러가기


728x90
반응형
Comments