뮤트 개발일지

[파이썬 코딩 도장] Unit 22. 리스트와 튜플 이용하기 본문

코딩도장

[파이썬 코딩 도장] Unit 22. 리스트와 튜플 이용하기

박뮤트 2021. 12. 29. 21:38

리스트 조작하기

append: 요소 하나를 추가

>>> a = [10, 20, 30]
>>> a.append(500)
>>> a
[10, 20, 30, 500]
>>> len(a)
4

extend: 리스트를 연결하여 확장

>>> a = [10, 20, 30]
>>> a.extend([500, 600])
>>> a
[10, 20, 30, 500, 600]
>>> len(a)
5

insert: 특정 인덱스에 요소 추가

>>> a = [10, 20, 30]
>>> a.append([500, 600])
>>> a
[10, 20, 30, [500, 600]]
>>> len(a)
4

insert(0, 요소): 리스트 맨 처음에 요소 추가

insert(len(리스트), 요소): 리스트 끝에 요소 추가

* len()은 인덱스보다 1이 더 많기 때문에 끝에 추가하는 데에 많이 사용된다.

>>> a = [10, 20, 30]
>>> a.insert(1, [500, 600])
>>> a
[10, [500, 600], 20, 30]

인덱스1번에 값 추가하기

>>> a = [10, 20, 30]
>>> a[1:1] = [500, 600]
>>> a
[10, 500, 600, 20, 30]

pop: 마지막 요소 또는 특정 인덱스의 요소 삭제

>>> a = [10, 20, 30]
>>> a.pop(1)
20
>>> a
[10, 30]

del 사용하기

>>> a = [10, 20, 30]
>>> del a[1]
>>> a
[10, 30]

remove: 특정 값을 찾아서 삭제

* 만약 리스트에 같은 값이 여러 개인 경우 처음 찾은 값이 삭제된다.

>>> a = [10, 20, 30, 20]
>>> a.remove(20)
>>> a
[10, 30, 20]

index(): 리스트에서 특정 값의 인덱스를 구한다.

>>> a = [10, 20, 30, 15, 20, 40]
>>> a.index(20)
1

count(): 리스트의 값 세기

>>> a = [10, 20, 30, 15, 20, 40]
>>> a.count(20)
2

reverse(): 리스트의 값 뒤집기

>>> a = [10, 20, 30, 15, 20, 40]
>>> a.reverse()
>>> a
[40, 20, 15, 30, 20, 10]

sort(): 리스트 정렬하기

* sort() 또는 sort(reverse=False): 리스트의 값을 작은 순서대로 정렬(오름차순)

* sort(reverse=True): 리스트의 값을 큰 순서대로 정렬(내림차순)

>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()
>>> a
[10, 15, 20, 20, 30, 40]

* sorted(): sort()와 유사하지만, 새로운 메모리에 할당하는 것이 차이. 정렬된 새 리스트를 생성한다.

>>> a = [10, 20, 30, 15, 20, 40]
>>> a.sort()    # a의 내용을 변경하여 정렬
>>> a
[10, 15, 20, 20, 30, 40]
>>> b = [10, 20, 30, 15, 20, 40]
>>> sorted(b)    # 정렬된 새 리스트를 생성
[10, 15, 20, 20, 30, 40]

clear(): 리스트의 모든 요소 삭제

del[:]: 리스트의 모든 요소 삭제

>>> a = [10, 20, 30]
>>> del a[:]
>>> a
[]

a[len(a):]: 끝에 값 추가하기

* 한 개를 추가하면 append()와 같고, 두 개 이상을 추가하면 extend()와 같다.

>>> a = [10, 20, 30]
>>> a[len(a):] = [500]
>>> a
[10, 20, 30, 500]

리스트가 비워져 있는지 확인하기

if not len(seq):    # 리스트가 비어 있으면 True
if len(seq):        # 리스트에 요소가 있으면 True
if not seq:    # 리스트가 비어 있으면 True
if seq:        # 리스트에 내용이 있으면 True
seq = []
if seq:               # 리스트에 요소가 있는지 확인
    print(seq[-1])    # 요소가 있을 때만 마지막 요소를 가져옴

리스트의 할당과 복사 알아보기

>>> a = [0, 0, 0, 0, 0]
>>> b = a

서로 같은 메모리를 가리키고 있는 상태이다.

리스트 a, b를 완전히 두 개로 만들기 위해서는 copy()로 복사해야 한다.


반복문으로 리스트의 요소를 모두 출력하기

for 반복문으로 요소 출력하기

기본 구조

for i in [38, 21, 53, 62, 19]:
    print(i)

인덱스와 요소를 함께 출력하기

>>> a = [38, 21, 53, 62, 19]
>>> for index, value in enumerate(a):
...     print(index, value)
...
0 38
1 21
2 53
3 62
4 19

for 인덱스, 요소 in enumerate(리스트, start = 숫자): 인덱스가 '숫자'부터 시작하도록 함

>>> for index, value in enumerate(a, start=1):
...     print(index, value)
...
1 38
2 21
3 53
4 62
5 19

while 반복문으로 요소 출력하기

기본구조

>>> a = [38, 21, 53, 62, 19]
>>> i = 0
>>> while i < len(a):
...     print(a[i])
...     i += 1
...
38
21
53
62
19

리스트의 가장 작은 수, 가장 큰 수, 합계 구하기

가장 작은 수 구하기

>>> a = [38, 21, 53, 62, 19]
>>> smallest = a[0]
>>> for i in a:
...     if i < smallest:
...         smallest = i
...
>>> smallest
19

* 가장 큰 수 구하기는 위에서 부등호만 바꾸면 된다.

sort() 사용하기

>>> a = [38, 21, 53, 62, 19]
>>> a.sort()
>>> a[0]
19
>>> a.sort(reverse=True)
>>> a[0]
62

min(), max() 사용하기

>>> a = [38, 21, 53, 62, 19]
>>> min(a)
19
>>> max(a)
62

리스트 요소의 합 구하기

반복문 사용

>>> a = [10, 10, 10, 10, 10]
>>> x = 0
>>> for i in a:
...     x += i
...
>>> x
50

sum() 사용

>>> a = [10, 10, 10, 10, 10]
>>> sum(a)
50

리스트 표현식 사용하기

리스트 컴프리핸션 list comprehension: 리스트 안에 for 반복문과 if 조건문을 넣을 수 있다.

for 문 넣기

>>> a = [i for i in range(10)]        # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = list(i for i in range(10))    # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

if 문 넣기

>>> a = [i for i in range(10) if i % 2 == 0]    # 0~9 숫자 중 2의 배수인 숫자(짝수)로 리스트 생성
>>> a
[0, 2, 4, 6, 8]

for 문 뒤에 if 문을 지정하면, 숫자를 생성한 뒤 if 문 조건에 맞는 특정 숫자만 뽑아서 리스트를 생성할 수 있다.


리스트에 map 사용하기