일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 유산소
- 자전거
- Kubernetes
- 성수대교
- 러닝
- 하체
- 대구
- Run The Bridge
- 달리기
- Grafana
- 오답노트
- Shell
- docker
- 2021
- 건대입구역
- 대전
- Python
- Linux
- 소모임
- 10km
- zabbix
- Podman
- GitHub
- 정보처리기사
- 중식
- 힐링
- 맛집
- DSEC
- 뚝섬유원지
- 한강
- Today
- Total
Run The Bridge
2부 리스트(list) 본문
0. 들어가기에 앞서
이 책에서 제3장과 4장에서는 리스트(list)가 무엇인지, 리스트의 항목을 어떻게 다루는지 알려준다.
list는 코딩을 할 때 매우 많이 쓰므로 잘 배워두면 매우 유용하고 쓸모가 많다.
꼭 list는 마스터하도록 하자!
1. 리스트란
쉽게 말해 특정 순서가 있는 항목의 모음으로 볼 수 있다.
0-9의 숫자, 가족 이름, 등 원하는 건 무엇이든지 리스트에 넣을 수 있다.
리스트에는 항목이 보통 2개 이상 들어가므로, 리스트 이름은 letters, digits, names처럼 복수형으로 쓴다.
# bycycle의 구성요소를 list에 담을 수 있다.
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
2. 리스트 항목에 접근하기
근데 이러한 리스트를 우리가 바꾸고 추가할 수 있어야 한다.
내가 리스트에 항목을 잘못 넣을 수도 있고 특정 위치의 값을 바꿀수도 있다.
리스트의 항목에 접근하기 위해선 인덱스(index)개념을 알아야한다.
리스트의 인덱스는 [0]부터 시작한다. 현실의 숫자는 1부터 시작하지만 컴퓨터 메모리는 0번지부터 시작한다.
내가 0번째 인덱스를 보고싶으면, print(리스트이름[0]) 이렇게 출력하면 된다.
# 0번째 인덱스 trek를 출력한다.
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])
----result----
trek
물론 출력이외에 0번째 인덱스의 값을 바꾸거나 할 수 있다.
# 0번째 인덱스 trek를 Trek로 출력한다.
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0].title())
물론 변수 bicycles의 값이 바뀐건 아니고 출력만 저렇게 해준다. 실제로 변수에 대입시켜줘야 값이 바뀐다.
만약 list의 개수가 너무 많아서 마지막값을 알 수 없을때, python에서는 간편하게 마지막 값을 볼 수 있다.
# [-1]은 뒤에서부터 가져오므로, 제일 마지막 값을 가져온다
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-1])
3. 리스트 항목 변경, 추가, 제거
# list 항목 변경
motocycles = ['honda', 'yamaha', 'suzuki']
print(motocycles)
motocycles[0] = 'ducati'
print(motocycles)
----result----
['honda', 'yamaha', 'suzuki']
['ducati', 'yamaha', 'suzuki']
list의 0번째 인덱스에 'ducati' 라는 값을 넣어주면 0번째 인덱스가 변경되는 것을 볼 수 있다.
list에 append()로 list의 끝에 항목을 추가할 수 있다.
motocycles = ['honda', 'yamaha', 'suzuki']
print(motocycles)
motocycles.append('ducati')
print(motocycles)
----result----
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha', 'suzuki', 'ducati']
append로 'ducati' 를 추가하니까 끝에 ducati가 추가된 것을 볼 수 있다.
list는 값을 담지않고, 빈 리스트를 선언할 수 있는데 다음과같이 활용가능하다.
motocycles = []
motocycles.append('honda')
motocycles.append('yamaha')
motocycles.append('suzuki')
print(motocycles)
----result----
['honda', 'yamaha', 'suzuki']
insert()로 리스트 중간에 삽입할 수 있다.
# 0번째 인덱스에 ducati를 넣으면 기존에 honda는 [1]번째 인덱스로 밀려난다.
motocycles = ['honda', 'yamaha', 'suzuki']
motocycles.insert(0, 'ducati')
print(motocycles)
----result----
['ducati', 'honda', 'yamaha', 'suzuki']
del 문으로 항목을 제거할 수 있다.
# 0번째 index인 honda를 del문으로 지웠다.
motocycles = ['honda', 'yamaha', 'suzuki']
del motocycles[0]
print(motocycles)
----result----
['yamaha', 'suzuki']
또한 pop()으로 항목을 제거할 수 있다. pop에서 빼온 인덱스는 다른 변수에 대입하여 사용할 수 있다.
# pop을 사용해서 suzuki를 빼내고, 그 값을 popped_motocycles에 담았다.
motocycles = ['honda', 'yamaha', 'suzuki']
print(motocycles)
popped_motocycles = motocycles.pop()
print(motocycles)
print(popped_motocycles)
----result----
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki
값으로 항목 제거하기
가끔은 리스트에서 제거할 값의 위치를 모를 수 있다. 제거할 항목의 값만 알고 있을 때는 remove() 메서드를 쓸 수 있다.
# remove를 사용해 ducati를 삭제
motocycles = ['honda', 'yamaha', 'ducati', 'suzuki']
print(motocycles)
motocycles.remove('ducati')
print(motocycles)
----result----
['honda', 'yamaha', 'ducati', 'suzuki']
['honda', 'yamaha', 'suzuki']
약간의 활용을 하면 다음과같이 쓸 수 있다.
motocycles = ['honda', 'yamaha', 'ducati', 'suzuki']
print(motocycles)
too_expensive = 'ducati' # ducati가 너무 비싸다.
motocycles.remove(too_expensive) # 비싼거는 전부 제거해줘
print(motocycles)
----result----
['honda', 'yamaha', 'ducati', 'suzuki']
['honda', 'yamaha', 'suzuki']
내가 삭제하고 싶은 index를 변수에 담고, 그 변수에 remove를 적용시키면 python에서 리스트를 확인하고 remove 시켜준다. 이러면 일일히 지정할 필요없이 삭제시킬 list를 지정해두면 손쉽게 제거할 수 있다.
※ 만약 리스트에 같은 값이 여러 개 있다면 remove() 메서드는 첫 번째 항목만 제거합니다. 값을 전부 지우고싶다면 루프를 써야하는데 이 방법은 나중에 배웁니다.
4. 리스트 정리하기
sort()로 리스트 영구 정렬하기
sort() 메서드를 쓰면 비교적 쉽게 리스트를 정렬할 수 있습니다. 다음의 예시와 같습니다.
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
----result----
['audi', 'bmw', 'subaru', 'toyota']
sort() 메서드에 매개변수로 reverse=True를 전달하면 리스트를 알파벳 반대 순서로 정렬할 수 있습니다.
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
----result----
['toyota', 'subaru', 'bmw', 'audi']
리스트의 원래 순서를 유지하면서 정렬된 순서로 표현 혹은 출력만 하려 할 때는 sorted() 함수를 씁니다.
sorted() 함수는 리스트를 특정 순서로 표현하지만, 리스트의 실제 순서는 바뀌지 않습니다.
cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list: ")
print(cars)
print("\nHere is the original list: ")
print(sorted(cars))
print("\nHere is the original list again: ")
print(cars)
----result----
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the original list:
['audi', 'bmw', 'subaru', 'toyota']
Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']
sorted() 함수도 마찬가지로 reverse=True 매개변수를 추가하면 list를 알파벳 반대 순서로 표시할 수 있습니다.
아까 sort(reverse=True)는 정렬을 거꾸로 해주는 방법이였는데, reverse() 메서드를 사용하면 리스트를 정렬 하지않고 거꾸로 출력할 수 있습니다.
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
----result----
['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']
5. 리스트 길이 구하기
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(len(cars))
----result----
4
len()은 생각보다 유용하게 많이 쓰인다. 사용하기도 쉬우므로 꼭 숙지해놓자!
6. 인덱스 에러 피하기
motocycles = ['honda', 'yamaha', 'suzuki']
print(motocycles[3])
----result----
Traceback (most recent call last):
File "C:/Users/Student/PycharmProjects/my_first_python_book/frist.py", line 2, in <module>
print(motocycles[3])
IndexError: list index out of range
위의 코드는 3번째 인덱스를 반환하려 하는데, motocycles 리스트에는 인덱스 3인 항목이 존재하지 않는다.
이 에러는 사람들이 리스트의 시작을 1번째로 시작하는줄 알고 발생하는 오류인데 꼭! 파이썬은 0부터 시작한다는 사실을 알고있어야 한다.
인덱스 -1에도 오류가 날 수 있는데 빈 리스트 '[]' 를 선언했을 때로 알고있으면 된다.
'Python > 나의 첫 파이썬' 카테고리의 다른 글
5부 딕셔너리(dict) (0) | 2021.09.21 |
---|---|
4부 if문 (0) | 2021.09.15 |
3부 리스트 다루기 & 튜플(tuple) (0) | 2021.09.15 |
1부 기초 (2) | 2021.09.09 |