🔗 출처

📘 Jump to Python 

02 파이썬 프로그래밍의 기초, 자료형

02-3 리스트 자료형


  1. 리스트는 어떻게 만들고 사용할까?
  2. 리스트의 인덱싱과 슬라이싱
    1. 리스트의 인덱싱
    2. 리스트의 슬라이싱
  3. 리스트 연산하기
    1. 리스트 더하기(+)
    2. 리스트 반복하기(*)
    3. 리스트 길이 구하기
  4. 리스트의 수정과 삭제
    1. 리스트의 값 수정하기
    2. del 함수를 사용해 리스트 요소 삭제하기
  5. 리스트 관련 함수
    1. 리스트에 요소 추가하기 - append
    2. 리스트 정렬 - sort
    3. 리스트 뒤집기 - reverse
    4. 인덱스 반환 - index
    5. 리스트에 요소 삽입 - insert
    6. 리스트 요소 제거 - remove
    7. 리스트 요소 끄집어내기 - pop
    8. 리스트에 포함된 요소 x의 개수 세기 - count
    9. 리스트 확장 - extend

1. 리스트는 어떻게 만들고 사용할까?

리스트명 = [요소1, 요소 2, 요소 3,...]
a = []
b = [1, 2, 3]
c = ['Life', 'is', 'too', 'short']
d = [1, 2, 'Life', 'is']
e = [1, 2, ['Life', 'is']]

2. 리스트의 인덱싱과 슬라이싱

2.1. 리스트의 인덱싱

리스트[숫자]
a = [1, 2, 3]
리스트의 첫 번째 값 출력하기
print(a[0])
1
리스트의 값들 더하기
print(a[0] + a[2])
4
리스트의 마지막 값 출력하기
print(a[-1])
3

 

이중 리스트에서 인덱싱 하기
a = [1, 2, 3, ['a', 'b', 'c']]
print(a[-1][0])
'a'

print(a[-1][1])
'b'

print(a[-1][2])
'c'
  • 기존의 인덱싱 방법에서 2차원 리스트에서 첫 번째, 두 번째, 세 번째 값을 불러올 수 있다.

 

삼중 리스트에서 인덱싱 하기
a = [1, 2, ['a', 'b', ['Life', 'is']]]

print(a[2][2][0])
'Life'

 

 

2.2. 리스트의 슬라이싱

문자열과 마찬가지로 리스트에서도 슬라이싱 기법을 적용할 수 있다.
a = [1, 2, 3, 4, 5]
print(a[0:2])
[1, 2]
문자열의 슬라이싱
a = "12345"
print(a[0:2])
'12'
  • 문자열에서 했던 슬라이싱 기법과 동일하다.
추가적인 리스트의 슬라이싱 예시
a = [1, 2, 3, 4, 5]
b = a[:2]    # 0~1번째 자리까지 슬라이싱
c = a[2:]    # 2번째 자리부터 끝까지 슬라이싱

print(b)
[1, 2]

print(c)
[3, 4, 5]
  • a[2]의 값인 3은 포함되지 않는다.
중첩된 리스트에서 슬라이싱 하기
a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]

print(a[2:5])
[3, ['a', 'b', 'c'], 4]

print(a[3][:2])
['a', 'b']​
→ 위 예에서 a[3]은 ['a', 'b', 'c']를 나타낸다.
→→ a[3][:2]는 ['a', 'b', 'c']의 첫 번째 요소부터 세 번째 요소 직전까지의 값, 즉 ['a', 'b']를 나타내는 리스트가 된다.

3. 리스트 연산하기

3.1. 리스트 더하기(+)

리스트 사이에서 (+)는 2개의 리스트를 합치는 기능을 한다.
문자열에서 "abc" + "def" = "abcdef"가 되는 것과 같은 원리이다.
a = [1, 2, 3]
b = [4, 5, 6]

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

 

3.2. 리스트 반복하기(*)

리스트가 반복되어 새로운 리스트를 만들어 낸다.
문자열에서  "abc" * 3 = "abcabcabc"가 되는 것과 같은 원리이다.
a = [1, 2, 3]

print(a * 3)
[1, 2, 3, 1, 2, 3, 1, 2, 3]

 

3.3. 리스트 길이 구하기

len()
a = [1, 2, 3]

print(len(a))
3

 

리스트 연산 오류
a = [1, 2, 3]

print(a[2] + "hi")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'​

a[2]에 저장된 값은 "정수(int)"인데 "hi"는 문자열이다.
정수와 문자열은 타입이 다르기 때문에 연산이 불가능하다.

print(str(a[2]) + "hi")
3hi

 이렇게 데이터 타입을 일치화 시켜주면 문제를 해결할 수 있다.


4. 리스트의 수정과 삭제

4.1. 리스트의 값 수정하기

변경하려는 리스트의 값을 다시 할당해 주면 수정된다.
a = [1, 2, 3]
a[2] = 4

print(a)
[1, 2, 4]

 

4.2. del 함수를 사용해 리스트 요소 삭제하기

del 객체
a = [1, 2, 3]
del a[1]

print(a)
[1, 3]
슬라이싱 기법으로 리스트의 여러 요소를 한꺼번에 삭제가 가능하다.
# 슬라이싱 기법으로 여러 요소 삭제하기
a = [1, 2, 3, 4, 5]
del a[2:]

print(a)
[1, 2]

5. 리스트 관련 함수

5.1. 리스트에 요소 추가하기

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

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

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

 

5.2. 리스트 정렬

.sort()
# 숫자 리스트
a = [1, 4, 3, 2]
a.sort()

print(a)
[1, 2, 3, 4]
# 문자열 리스트
a = ['a', 'c', 'b']
a.sort()

print(a)
['a', 'b', 'c']

 

5.3. 리스트 뒤집기

.reverse()
정렬한 다음 다시 역순으로 정렬하는 것이 아니라, 현재의 리스트를 그대로 거꾸로 뒤집는 함수이다.
a = ['a', 'c', 'b']
a.reverse()

print(a)
['b', 'c', 'a']

 

5.4. 인덱스 반환

.index()
소괄호에 있는 값의 위치를 반환한다.
a = [1, 2, 3]
print(a.index(3))
2

print(a.index(1))
0
값이 없을 시에는 오류가 발생한다.
print(a.index(0))

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 0 is not in list​

 

5.5. 리스트에 요소 삽입

.insert(삽입하고자 하는 위치, 삽입하려는 값)
a = [1, 2, 3]
a.insert(0, 4)    # 0번째 위치에 4를 삽입

print(a)
[4, 1, 2, 3]
a.insert(3, 5)    # 3번째 자리에 5를 삽입

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

 

5.6. 리스트 요소 제거

.remove(삭제하려는 값)
a = [1, 2, 3, 1, 2, 3]
a.remove(3)

print(a)
[1, 2, 1, 2, 3]

a.remove(3)
print(a)
[1, 2, 1, 2]
  • a가 3이라는 값을 중복으로 갖고 있을 경우, 첫 번째 3만 제거된다.
  • 한 번 더 실행하면 다시 3이 삭제된다.

 

5.7. 리스트 요소 끄집어내기

.pop()
맨 마지막 요소를 리턴하고, 그 요소를 삭제한다.
a = [1, 2, 3]
a.pop()    # 아무것도 안 적으면 마지막 요소를 반환 후 삭제
3

print(a)
[1, 2]
a = [1, 2, 3]
a.pop(1)    # 1번째 자리의 값을 반환 후 삭제
2

print(a)
[1, 3]

 

5.8. 리스트에 포함된 요소 x의 개수 세기

.count(x)
리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 리턴한다.
a = [1, 2, 3, 1]

a.count(1)
2
  • 리스트 안에 1이 두 개가 있어서 2를 반환한다.

 

5.9. 리스트 확장

.extend(x)
x에는 리스트만 올 수 있으며, 원래의 리스트에 x 리스트를 더하게 된다.
a = [1, 2, 3]
a.extend([4, 5])    # a에 [4, 5]를 새롭게 추가

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

b = [6, 7]
a.extend(b)

print(a)
[1, 2, 3, 4, 5, 6, 7]    # 리스트 b가 a에 추가됨

 

+ Recent posts