신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

파이썬 리스트(List)

파이썬에는 리스트라는 자료형이 있습니다. 리스트를 가지고 데이터를 쉽게 관리 할 수 있습니다. 다른 언어와 비교한다면 배열과 비슷하다고 할 수 있습니다.

 

리스트에는 여러가지 메소드와 기능들이 있습니다. 본 글에서 살펴볼 메소드와 기능들을 차례대로 나열하면, 생성방법, 인덱싱, 슬라이싱, 다중 리스트, 리스트 연산(더하기, 곱하기), 리스트 추가, 수정, 삭제(append, del, pop)을 살펴보겠습니다. 그리고 자주 사용하는 sort()에 대해서도 알아 보겠습니다.

 

리스트의 형태와 생성 방법

리스트는 리스트명 = [요소1, 요소2, 요소3, ...] 과 같은 형태로 이루어 집니다.

# 리스트명 = [요소1, 요소2, 요소3 ...]
my_list = [2, 7, 9, 10]
print(my_list)

# 결과값
# [2, 7, 9, 10]​

 

생성하는 방법을 살펴봅니다. 생성할 때는 2가지 방법이 있습니다. '[]'와 list()입니다.

# 리스트 생성 방법
a = []
b = list()
print('type(a):', type(a))
print('type(b):', type(b))

# 결과 값
# type(a): <class 'list'>
# type(b): <class 'list'>​

 

type() 메소드를 이용하면, 해당 객체의 종류를 알 수 있습니다. []를 이용하든 list()를 이용하든 둘다 list type을 가지는 것을 확인 할 수 있습니다.

 

인덱싱과 슬라이싱

인덱싱

인덱싱이란 인덱스를 이용해서 리스트 안에 특정한 값을 가져올 때 사용하는 방법 입니다. 사용할때는 '리스트명[인덱스]'와 같은 형태로 사용합니다.

# 리스트의 인덱싱
a = [1, 4, 7, 8, 9, 10]
print('a[0]:', a[0])
print('a[-1]:', a[-1])

print('a[0] + a[3]:', a[0] + a[3]) # 연산 또한 가능

# 결과 값
# a[0]: 1
# a[-1]: 10
# a[0] + a[3]: 9​

 

인덱싱을 이용해서 가져온 값들이 숫자인 경우 정수형 자료형을 다루듯이 연산을 할 수 있습니다.

 

슬라이싱

슬라이싱 - 출처

 

슬라이싱은 인덱스를 이용해서 일부분을 잘라서 가져오는 방법입니다. 앞서 문자열을 살펴볼때도 나왔었지만, 사용방식은 동일합니다.

# 리스트의 슬라이싱
print('a[0:2]:', a[0:2])
print('a[3:]', a[3:])

# 결과 값
# a[0:2]: [1, 4]
# a[3:] [8, 9, 10]​

 

다중 리스트

위에서는 리스트안에 정수형 자료형이나 문자열 자료형이 들어간 경우만 살펴 봤습니다. 하지만, 리스트 안에 또 리스트가 들어갈 수 도 있습니다.

# 이중 리스트
aa = [1, 2, 3, ['a', 'b', 'c']]
print('aa[3]:', aa[3])
print('aa[3][1]:', aa[3][1])

# 결과 값
# aa[3]: ['a', 'b', 'c']
# aa[3][1]: b​

 

리스트안에 또 리스트를 넣어서 좌표처럼 표현할 수도 있습니다.

 

좌표 표현하기(응용)

2차원 좌표를 표현하기 위해 (x, y) 형태로 나타내겠습니다. 생각보다 간단합니다. 그냥 리스트안에 리스트를 또 넣어 주면 됩니다.

# 리스트로 좌표 표현하기
data = [
    [1,0,1,1,1],
    [1,0,1,0,1],
    [1,0,1,0,1],
    [1,0,1,0,1],
    [1,1,1,0,1]
]
print('data:', data)
print('*** 좌표 ***')
for _ in data :
    print(_)

# 결과 값
# data: [[1, 0, 1, 1, 1], [1, 0, 1, 0, 1], [1, 0, 1, 0, 1], [1, 0, 1, 0, 1], [1, 1, 1, 0, 1]]
# *** 좌표 ***
# [1, 0, 1, 1, 1]
# [1, 0, 1, 0, 1]
# [1, 0, 1, 0, 1]
# [1, 0, 1, 0, 1]
# [1, 1, 1, 0, 1]
​

이 방법은 알고리즘을 이용할 때 많이 사용됩니다. (예를 들어, BFS, DFS 등등...)

 

리스트 연산(더하기, 곱하기)

리스트를 더하고 곱하는 연산도 가능합니다. 더하기는 두개 이상의 리스트들을 서로 합칠때 사용할 수 있고, 곱하는 것은 해당 리스트를 반복할 수 있습니다. 예제를 살펴보겠습니다.

# 리스트 더하기(+)
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = a + b
print('c:', c)

# 결과 값
# c: [1, 2, 3, 'a', 'b', 'c']​

 

# 리스트 반복하기(*)
a = ['a', 1, 3, 'c']
print('a * 2:', a * 2)

# 결과 값
# a * 2: ['a', 1, 3, 'c', 'a', 1, 3, 'c']​

 

리스트 추가, 수정, 삭제(append, del, pop)

추가 append()

리스트 요소를 추가할때는 append() 메소드를 이용합니다. 형태는 '리스트명.append(요소)'와 같은 형태로 사용합니다. [1, 2] 리스트에서 3을 추가하는 예제를 살펴 보겠습니다.

# 리스트 추가, 수정, 삭제
# 추가(append() 이용)
a = [1, 2]
a.append(3)
print('3추가 후 a:', a)

# 결과 값
# 3추가 후 a: [1, 2, 3]​

 

수정

수정을 할때는 인덱스를 이용합니다. 기존 [1, 2, 3] 리스트에서 2번째 요소를 바꾸고 싶을때는 새로운 값을 대입해주면 됩니다. 예를들어, 'a[1] = 새로운 값' 과 같이 표현 할 수 있습니다.

# 수정(인덱싱 이용)
print('변경되기 전 a:', a)
a[1] = 200
print('변경된 후 a:', a)

# 결과 값
# 변경되기 전 a: [1, 2, 3]
# 변경된 후 a: [1, 200, 3]​

 

삭제 del과 pop()

삭제를 할때는 2가지 방법이 있습니다. del 키워드를 이용하는 방법과 pop()이라는 메소드를 이용하는 방법입니다. 차이점은 2가지가 있습니다. 첫번째는 del은 키워드입니다. 반면, pop()은 메소드입니다. 두번째, pop()을 이용하면 해당 원소의 값을 반환하면서 리스트에서 값을 삭제 합니다. 하지만 del은 값을 반환하지 않습니다.

# 삭제(del, pop() 이용)
print('del을 이용한 삭제 전 a:', a)
del a[0]
print('del을 이용한 삭제 후 a:', a)

print('pop을 이용한 삭제 전 a:', a)
print('a.pop(1):', a.pop(1)) # 값을 반환하고 삭제
print('pop을 이용한 삭제 후 a:', a)

# 결과 값
# del을 이용한 삭제 전 a: [1, 200, 3]
# del을 이용한 삭제 후 a: [200, 3]

# pop을 이용한 삭제 전 a: [200, 3]
# a.pop(1): 3
# pop을 이용한 삭제 후 a: [200]​

 

sort()

sort라는 메소드를 이용하면 쉽게 리스트를 정렬 할 수 있습니다. 숫자의 경우에는 오름차순, 내림차순으로 가능하고, 문자열의 경우에는 알파벳 순으로 오름차순, 내림차순이 가능합니다. 기본적으로 오름차순으로 정렬되지만, reverse=True라는 옵션을 넣어주면 내림차순으로 표현이 가능 합니다.

# 정렬
a = [100, 6, 44, 8, 5, 10, 2, 77, 9]
a.sort()
print('정수형 오름차순 :', a)
a.sort(reverse=True)
print('정수형 내림차순 :', a)

# 결과 값
# 정수형 오름차순 : [2, 5, 6, 8, 9, 10, 44, 77, 100]
# 정수형 내림차순 : [100, 77, 44, 10, 9, 8, 6, 5, 2]

b = ['mike', 'alice', 'banana', 'apple']
b.sort()
print('문자열 오름차순 :', b)
b.sort(reverse=True)
print('문자열 내림차순 :', b)

# 결과 값
# 문자열 오름차순 : ['alice', 'apple', 'banana', 'mike']
# 문자열 내림차순 : ['mike', 'banana', 'apple', 'alice']​

관련된 글

2018/08/29 - [Language/Python] - Python :: 파이썬을 사용하는 이유? (프로그래밍 언어)

2018/08/30 - [Language/Python] - Python :: 파이썬 개발도구, IDLE 과 서브라임 텍스트 (설치 및 다운로드)

2018/09/06 - [Language/Python] - Pycharm CE :: 맥북에 파이참 설치하기 (Python 파이썬 개발 도구)

2018/08/30 - [Language/Python] - Python :: 파이썬을 계산기처럼 사용해보기

2018/08/31 - [Language/Python] - Python :: 파이썬의 숫자형 자료형(정수, 실수, 복소수, 8진수, 16진수)

2018/09/03 - [Language/Python] - Python :: 파이썬 문자열(string) 알아보기(이스케이프 문자, 인덱싱, 슬라이싱)

2018/09/19 - [Language/Python] - Python :: 파이썬 튜플(Tuple) 자료형 개념과 사용방법

2018/10/03 - [Language/Python] - Python :: 파이썬 딕셔너리(Dictionary) 사전 개념 및 사용방법

 


Reference

https://wikidocs.net/14

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기