본문 바로가기
Python

[파이썬] 리스트 (리스트 선언, 연산, 값 추출, 수정, 삭제, 메소드)

by 메이플 🍁 2022. 3. 8.

⚠️ 이 포스팅은 인프런님의 프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)을 공부하고 정리한 블로그 포스팅입니다. ⚠️

 

포스팅에 해당하는 목차는 다음과 같습니다:

섹션 3. 파이썬 기초 자료형

  • 리스트(3-1)
  • 리스트(3-2)

 


 

1. 리스트

  • 여러 데이터 타입을 [ ] 안에 담을 수 있다
  • 리스트는 시퀀스형으로 순서가 존재한다
  • 리스트 자료형은 중복, 수정, 삭제가 가능한 데이터 형식이다
  • 다른 언어에서는 일반적으로 배열이라고 많이 불린다
  • 주로 알고리즘을 풀기 위해 많이 사용된다

 

2. 리스트 선언

2.1 [ ]를 변수에 할당한다

a = []
print(type(a))
# <class 'list'>

2.2 list( ) 함수를 변수에 할당한다

b = list()
print(type(b))
# <class 'list'>

 

3. 리스트 특징

서로 다른 자료형을 한 리스트 안에 담을 수 있다

c = [1, 2, 'Alpha', 'Gamma', 'Delta']
d = [3.14, 'Python', False]

리스트안에 리스트를 할당할 수 있다

e = [1, 2, ['Alpha', 'Gamma', 'Delta']]

 

4. 리스트의 인덱스값

list 안에 있는 데이터는 왼쪽부터 차례대로 인덱스 0, 1, 2를 가리킨다

f = [1, 2, 3]

인덱싱으로 내가 원하는 데이터를 꺼내오기

e = [1, 2, ['Alpha', 'Gamma', 'Delta']]
print(e[2][0])
# Alpha
print(e[2][2])
# Delta
print(e[-1][0])
# Alpha
print(e[-1][-1])
# Delta

인덱싱한 후 리스트 만들기

e = [1, 2, ['Alpha', 'Gamma', 'Delta']]
print(list(e[-1][0]))
# ['A', 'l', 'p', 'h', 'a']

 

5. 슬라이싱

변수 a가 리스트 형태일때 a[x:y]는 리스트 a의 인덱스 x번부터 y-1까지를 의미한다 

e = [1, 2, ['Alpha', 'Gamma', 'Delta']]
print(e[0:])
# [1, 2, ['Alpha', 'Gamma', 'Delta']
print(e[-1][1:3])
# ['Gamma', 'Delta']
# 변수 e에서 -1번째 인덱스값은 리스트 ['Alpha', 'Gamma', 'Delta']다.
# 이 리스트에서 인덱스 1번부터 2번까지의 데이터를 프린트해야하므로 ['Gamma', 'Delta']를 리턴한다

 

6. 리스트 연산

e = [1, 2, ['Alpha', 'Gamma', 'Delta']]
f = [1, 2, 3]

print(e + f)
# [1, 2, ['Alpha', 'Gamma', 'Delta'], 1, 2, 3]

print(e * 3)
# [1, 2, ['Alpha', 'Gamma', 'Delta'], 1, 2, ['Alpha', 'Gamma', 'Delta'], 1, 2, ['Alpha', 'Gamma', 'Delta']]

print(f * 3)
# [1, 2, 3, 1, 2, 3, 1, 2, 3]

print(e[-1][0] + str(f[1]))
# Alpha2

 

7. 리스트 값 비교

g = [1, 2, 3]
print(g == g[:3] + g[3:])
# True
print(g[:3] + g[3:])
# [1, 2, 3]
print(g[:3])
# [1, 2, 3]
print(g[3:])
# []

 

8. 리스트의 id값

리스트도 하나의 주소값을 공유한다

g = [1, 2, 3]
copy = g
print(id(copy) == id(g))
# True
print(id(copy))
# 4462085440
print(id(g))
# 4462085440

 

9. 리스트 수정

9.1 인덱스번호로 접근해서 새로운 데이터를 넣는 방법

h = [1, 2, 3]
h[0] = ['new data', 'new data', 'new data']
print(h)
# [['new data', 'new data', 'new data'], 2, 3]

9.2 슬라이싱으로 접근해서 새로운 데이터를 넣는 방법

h = [1, 2, 3]
h[0:] = ['new data', 'new data', 'new data']
print(h)
# ['new data', 'new data', 'new data']

9.3 인덱스로 데이터 수정 VS 슬라이싱으로 데이터를 수정

9.3.1 인덱스로 리스트에 데이터를 넣을때는 리스트 그 자체가 들어간다

h = [1, 2, 3]
h[0] = ['x', 'x', 'x']
print(h)
# [['x', 'x', 'x'], 2, 3]

9.3.2 슬라이싱으로 리스트에 데이터를 넣을때는 데이터가 들어간다 (원소가 들어감)

h = [1, 2, 3]
h[0:0] = ['y', 'y', 'y']
print(h)
# ['y', 'y', 'y', 1, 2, 3]

슬라이싱으로 다른 리스트 안에 리스트를 할당시키는 방법

h = [1, 2, 3]
h[3:] = [[4, 5, 6]]
print(h)
# [1, 2, 3, [4, 5, 6]]

 

10. 리스트 삭제

슬라이싱으로 빈 리스트를 넣어 리스트 데이터를 삭제한다

i = [1, 2, 3]
i[0:1] = []
print(i)
# [2, 3]

만약 인덱스로 빈 리스트를 전달하게 된다면 리스트 삭제가 아닌 빈리스트 그 자체가 들어가게 된다

i = [1, 2, 3]
i[0] = []
print(i)
# [[], 2, 3]

키워드 del을 사용해서 인덱스값으로 데이터 삭제

i = [1, 2, 3]
del i[2]
print(i)
# [1, 2]

del VS remove()

  • del은 인덱스 번호로 리스트에 있는 데이터를 제거
  • remove()는 데이터값으로 리스트에 있는 데이터를 제거
i = [1, 2, 3]
del i[1]
print(i)
# [1, 3]

i = [1, 2, 3]
i.remove(3)
print(i)
# [1, 2]

 

11. 리스트의 메소드

11.1 sort()

리스트 안에 있는 데이터를 오름차순으로 정리해주는 함수

j = [35, 8764, 12, 68]
j.sort()
print(j)
# [12, 35, 68, 8764]

11.2 reverse()

리스트 안에 있는 데이터를 거꾸로 리턴하는 함수

j = [35, 8764, 12, 68]
j.reverse()
print(j)
#[68, 12, 8764, 35]

11.3 index()

리스트 안에 있는 데이터의 인덱스값을 가져오는 함수

j = [35, 8764, 12, 68]
print(j.index(35))
# 0
print(j.index(8764))
# 1
print(j.index(12))
# 2
print(j.index(68))
# 3

11.4 append()

리스트 끝에 데이터를 추가해주는 함수

j = [35, 8764, 12, 68]
j.append(7)
print(j)
# [35, 8764, 12, 68, 7]

11.5 insert(인덱스, 새로운 데이터)

리스트에 데이터를 추가해주는 함수로 값을 대체하지 않고 새로운 데이터만 추가한다

j = [35, 8764, 12, 68]
j.insert(1, 'new data')
print(j)
# [35, 'new data', 8764, 12, 68]

append() vs insert()

  • append는 리스트 마지막에 데이터 추가
  • insert는 데이터를 넣는 곳을 정할 수 있다

11.6 pop()

리스트 맨끝에 있는 데이터를 리턴하고 리턴한 데이터를 삭제한다

j = [35, 8764, 12, 68]
print(j.pop())
# 68
print(j)
# [35, 8764, 12]

11.7 count()

리스트에 해당 데이터가 몇개 있는지 리턴한다

j = [35, 8764, 35, 12, 35, 68]
print(j.count(35))
# 3

11.8 extend()

리스트를 다른 리스트와 합칠때

fruits = ['apple', 'banana']
otherFurits = ['watermelon', 'peach', 'fig']
fruits.extend(otherFurits)
print(fruits)
# ['apple', 'banana', 'watermelon', 'peach', 'fig']

댓글