[Python] 파이썬 자료 구조 - list

haejun-kim·2020년 6월 21일
1

[Python]

목록 보기
1/19
post-thumbnail

😓 개인 사정으로 약 2주정도 코딩에 손을 놓았더니 기초적인 부분을 좀 까먹은 부분이 몇개 있다.
그래서 블로그를 시작한 김에 다시 기초적인 부분을 정리해놓으려고 한다. 다시 까먹더라도 보고 기억을 상기시킬 수 있도록.

type 확인하기

모든 프로그램에서 변수의 타입을 인지하고 있는 것은 상당히 중요하다. 코드가 짧은 경우 직관적으로 눈에 보이겠지만 코드의 양이 길어질수록 눈에 보이지 않고 찾기가 힘들어진다. 이런 경우 type()을 사용해 변수의 데이터 타입이 어떤식으로 이루어져있는지 간단히 확인할 수 있다.

리스트 list()

파이썬의 list는 어떤 값들의 연속적인 내용을 담을 수 있으며 크기를 동적으로 조정할 수 있는 배열이다.

list는 항목을 ,로 구분하고, 대괄호 [ ]로 감싼다. 리스트의 항목은 모두 다른 데이터 타입이어도 된다. 불변 타입인 문자열과는 달리, 리스트는 가변 타입이다.

a = [1,2,3,4,5,6]
print(a)

b = ["글자", 123, 123.0, [123,123], [1], [[123]]]
print(b)

print(type(a), type(b))

실행 결과

위에서 설명 한 대로 가변 타입이기 때문에 리스트 안에 리스트(다중 배열), 소수, 숫자, 문자열 모두 들어갈 수 있다.
type()을 통해 list로 되어 있음을 확인 할 수 있다.

인덱싱과 슬라이싱

위의 예에서 변수 a를 인덱싱을 해보고 슬라이싱을 해보자.

>>> a = [1,2,3,4,5,6]
>>> a[0]
1
>>> a[-1]
6
>>> a[0:1]
[1]
>>> a[0:2]
[1, 2]

❗️ 여기서 기억해야할 점은 인덱싱을 하면 그냥 인덱스가 출력 될 뿐이지만, 슬라이싱을 하면 리스트의 형태로 출력이 나온다는 것이다.

추가

리스트는 크기를 동적으로 조절할 수 있는 배열이라고 했다. 그 의미는 리스트 안의 요소들을 마음대로 추가하고 삭제하는 등이 가능하다는 것이다.

append()

append() 는 리스트에 요소를 추가해주는 메소드이다.

>>> a = [1,2,3]
>>> a
[1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]

실행 결과를 확인해보면 리스트의 제일 마지막에 요소가 추가되는 것을 확인할 수 있다.

insert()

insert()는 리스트에 요소를 삽입한다.
append()가 리스트의 마지막에 요소를 추가시켰다면 insert()는 리스트의 중간에 요소를 삽입시킨다는 차이가 있다.

>>> a.insert(0,0)
>>> a
[0, 1, 2, 3, 4]

insert()() 안에 어디에,무엇을 이 두가지를 정의 해 주어야 한다.
즉, 리스트 a의 어느 위치에 어떤 요소를 추가시키겠는지를 정의 해 주어야 한다.
위의 예에서는 0번째 index 위치에 0을 추가시키겠다고 정의하였고, 실행결과도 정상적으로 동작 됨을 확인할 수 있다.

삭제

del 인덱스

del 메소드를 사용해 위치값을 정의하여 인덱스를 삭제할 수 있다.
del 은 리스트 요소 삭제 뿐만 아니라 파이썬에서 무언가를 삭제할 때 주로 사용된다.

>>> del a[0]
>>> a
[1, 2, 3, 4]

리스트 a 의 0번째 인덱스가 삭제됐다.

한번에 여러개도 삭제할 수 있다.

>>> del a[0:2]
>>> a
[3, 4]

remove(요소)

remove()요소를 지정하여 인덱스를 삭제할 수 있다.

>>> a.remove(4)
>>> a
[3]

[3,4]4를 지정하여 삭제하였다.

pop(인덱스)

pop()은 삭제라는 개념보다는 빼낸다는 의미에 가깝다.
예를 들어 [1,2,3,4,5] 중에서 2를 pop시키면 리스트에는 [1,3,4,5]만 남고 2는 결과 값으로 return 되는 것이다.

>>> a.pop(0)
3
>>> a
[]

a 를 출력하지 않고 pop() 만으로 바로 0번째 인덱스에 해당하는 값이 출력(return) 되며, 리스트에 있던 3 은 삭제되었음을 확인할 수 있다.

확장

리스트와 리스트를 확장시킬수도 있다. 추가시키는것이 아니라 확장시키는 것이다.

extend()

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a+b
[1, 2, 3, 4, 5, 6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.append(b)
>>> a
[1, 2, 3, [4, 5, 6]]

리스트 ab가 있다. a+b를 통해서 확장할 수도 있지만 extend()를 사용해서 두 개의 리스트를 하나의 리스트로 확장시킬 수 있다.

❗️ 주의해야할 점은 확장과 추가는 다른 개념이다. 위의 예제에서도 확인할 수 있듯 extend() 의 출력값은 하나의 리스트로 출력된다. 하지만 append() 의 출력값은 리스트 안에 리스트가 들어간 형태로 출력된다. 이 점을 주의하자.

정렬

리스트의 요소들이 난잡하게 있는 경우 정렬할 수 있는 기능도 존재한다.

sort()

순차적 정렬

>>> a = [4,5,6,3,2,1]
>>> a
[4, 5, 6, 3, 2, 1]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5, 6]

reverse()

역으로 정렬

>>> a
[1, 2, 3, 4, 5, 6]
>>> a.reverse()
>>> a
[6, 5, 4, 3, 2, 1]

요소 검색 (포함 됐는지 확인)

코드의 양이 길어질 경우 여러개의 리스트가 존재하고, 그 안에 요소들 또한 양이 방대하며, 시점에 따라 요소들도 추가되고 삭제되기 때문에 매번 기억하고 있기가 쉽지 않다. 그렇다고 매번 다시 위로 올라가서 확인하는것도 비효율적인 방법이다. 그래서 리스트에 내가 원하는 요소가 포함되어 있는지 간단하게 확인할 수 있는 방법이 있다.

in

>>> a
[6, 5, 4, 3, 2, 1]
>>> 1 in a
True
>>> 10 in a
False

리스트에 내가 찾는 값이 있으면 True, 없으면 False를 리턴한다.
in아주아주 자주 쓰이는 것이니 사용에 익숙해지자.

그 외에도

위에 설명을 적은 것 외에도 굉장히 많은 메소드가 존재하지만 대부분 이정도 사용하는 것 같다.(내 수준엔)
혹시 어떤 명령어들이 존재하는지 궁금하면 dir(list) 명령어를 통해 확인할 수 있다.

0개의 댓글