이번 글은 코드잇 강의를 수강하면서 배운 내용을 주로 하여 정리되어 있습니다. (코드잇 스프린트 데이터 애널리스트 트랙 1기 훈련생)
리스트
리스트(자료형)
리스트는 []로 둘러싸인 자료형이다.
- 리스트에서 요소의 위치를 인덱스라고 한다.
- 리스트에서 인덱스를 사용하여 요소를 호출하는 것을 ‘인덱싱’이라고 함.
- 인덱스는 0부터 시작한다.
- 또한 -(마이너스 기호)를 활용하여 뒤의 요소의 인덱싱도 가능하다(-1 : 마지막 요소)
# 리스트 예시 / 리스트는 다음과 같이 간단하게 표현 가능하다.
numbers = [2, 3, 5, 7, 11, 13] #리스트에 들어간 자료들을 요소라고 한다.
names = ["윤수", "혜린", "태호", "영훈"] # 숫자나 문자가 모두 요소가 될 수 있다.
print(numbers[0]) -> 2 출력 # numbers 리스트에서 [0]은 [-6]와 인덱스가 동일하다 같은 인덱싱 [5]=[-1]
print(names[1]) -> 혜린 출력
# 인덱스는 1번이 아닌 0번부터 시작 0->1->2->3
리스트 슬라이싱
리스트도 문자열처럼 슬라이싱이 가능하며, 슬라이싱은 리스트에서 원하는 부분을 추출하는 것이다.
# 슬라이싱 예시
print(numbers[0:4]) -> [2, 3, 5, 7] # 슬라이싱할 때 뒤에 숫자까지가 아니라 -1만큼 슬라이싱됨
print(numbers[2:]) -> [5, 7, 11, 13] #인덱스 2~끝 출력
print(numbers[:3]) -> [2, 3, 5] # 인덱스 0~2 출력
지정연산자를 활용한 리스트 수정
numbers[0] = 7
print(numbers) -> [7, 3, 5, 7, 11, 13]로 수정
# 인덱싱과 지정연산자를 활용하여 리스트 요소 수정 가능 !!다른 문자형은 수정 x
리스트 함수
- len(리스트명) : 리스트의 개수를 알려줌
- 리스트명.append() : 리스트 요소 추가(추가가 되지만 오른쪽 끝으로 요소 추가, 위치 지정하여 추가하고 싶다면 insert 활용)
- del 리스트명[] : 원하는 인덱스의 요소 제거
- 리스트명.insert(인덱스, 요소) : 원하는 인덱스에 요소 추가
리스트 정렬
sorted와 sort를 활용하여 리스트를 정렬한다.
sorted
sorted는 기존 리스트의 순서는 건드리지 않고 순서가 정렬된 새로운 리스트를 리턴한다.
sorted(리스트명) # 작은 순서대로 정렬
sorted(리스트명, reverse=True) # 큰 순서대로 정렬하고 싶으면
sort
아무것도 반환하지 않고 기존 리스트의 순서를 정렬한다. (순서가 완전히 바뀐 리스트를 출력)
리스트명.sort() # 작은 순서대로 정렬 / print문에 이 코드가 들어가면 none이 출력됨
print(리스트명) # 그대로 리스트명을 입력해야 정렬된 리스트가 출력됨
리스트명.sort(reverse=True) # 큰 순서대로 정렬
리스트 꿀팁
in
리스트에서 값의 존재를 확인하는 함수이다.
# 어떤 값이 리스트에 있는지 확인하는 함수
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23]
print(7 in primes) # True
print(12 in primes) # False
Nested List(리스트 안의 리스트)
리스트 안에 리스트가 있는 구조로 인덱싱과 슬라이싱이 모두 가능하다.
# 세 번의 시험을 보는 수업
grades = [[62, 75, 77], [78, 81, 86], [85, 91, 89]]
# 첫 번째 학생의 성적
print(grades[0])
# 세 번째 학생의 성적
print(grades[2])
# 첫 번째 학생의 첫 번째 시험 성적
print(grades[0][0])
# 세 번째 학생의 두 번째 시험 성적
print(grades[2][1])
# 첫 번째 시험의 평균
print((grades[0][0] + grades[1][0] + grades[2][0]) / 3)
reverse
요소를 뒤집어진 순서로 배치하는 함수이다.
numbers = [5, 3, 7, 1]
numbers.reverse()
print(numbers)
# [1, 7, 3, 5]
index
호출한 값을 가지고 있는 요소의 인덱스를 리턴해준다.
members = ["영훈", "윤수", "태호", "혜린"]
print(members.index("윤수"))
print(members.index("태호"))
# 1
# 2
remove
리스트에서 첫 번째로 호출한 값을 갖고 있는 원소를 삭제해준다.
fruits = ["딸기", "당근", "파인애플", "수박", "참외", "메론"]
fruits.remove("파인애플")
print(fruits)
for 반복문
while문과 비슷한 반복문으로 상황에 따라 while문보다 깔끔하게 코드를 작성할 수 있다.
for문은 조건부분이 없다.
# for 반복문 예시
my_list = [2, 3, 5, 7, 11]
for number in my_list:
print(number)
range 함수
range 함수는 파라미터를 1개range( ), 2개range( , ), 3개range( , , )를 사용하는 3가지 버전이 있다.
# 1개 버전
for i in range(stop): # 0부터 stop-1까지의 범위
print(i)
for i in range(10): # 0부터 9까지의 범위
print(i)
# 2개 버전
for i in range(start, stop): # start부터 stop-1까지의 범위
print(i)
# 3개 버전
for i in range(start, stop, step): # start부터 stop-1까지의 범위 ,간격 step
print(i)
for i in range(3, 17, 3): # 3부터 16까지 3씩 간격을 줌
print(i) # 3 6 9 12 15
for 반복문의 장점 : 간편하고 깔끔하다. / 메모리 효율성이 좋다.
사전
사전(자료형)
사전은 key와 value가 하나의 쌍을 이루면서 정보를 나타내는 자료형이다.
사전은 Key를 통해 Value를 얻는다.
# 사전의 구조 예시
my_dictionary = {
5: 25, # 키가 5이고 25가 값인 쌍
2: 4,
3: 9
}
print(my_dictionary[3]) # 리스트의 인덱싱처럼 인덱스 대신 키를 입력하여 value를 불러올수 있음
# 사전에 새로운 쌍을 추가하고 싶다면
my_dictionary[9] = 81
print(my_dictionary)
# 다른 예시
my_family = {
'엄마': '김자옥', # key : value
'아빠': '이석진',
'아들': '이동민',
'딸': '이지영'
}
사전 활용법
in을 활용하여 사전에 값이 있는지나 key와 value를 차례대로 불러올수 있다.
print(my_family.values()) # 사전의 값의 목록을 추출
print('이지영' in my_family.values()) # 목록에 값이 있는지 확인하기 위해 사용
for value in my_family.values(): # 위 코드로 반복문을 돌고 싶다면
print(value) #값들을 하나씩 차레대로 출력
print(my_family.keys()) # key도 활용 가능
for key in my_family.keys():
print(key)
for key in my_family.keys():
value = my_family[key]
print(key, value)
# 위 코드를 간략하게
for key, value in my_family.items():
print(key, value)
Aliasing
가명'이라는 뜻을 가진다.
변수 = 객체 일 때, 객체에 변수라는 가명을 정해주는 것이다.
리스트와 문자열
리스트와 문자열은 굉장히 비슷합니다. 리스트가 어떤 자료형들의 나열이라면, 문자열은 문자들의 나열이라고 할 수 있습니다.
인덱싱
두 자료형은 공통적으로 인덱싱이 가능합니다.
# 알파벳 리스트의 인덱싱
alphabets_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print(alphabets_list[0]) #A
print(alphabets_list[1]) #B
print(alphabets_list[4]) #E
print(alphabets_list[-1]) #J
# 알파벳 문자열의 인덱싱
alphabets_string = 'ABCDEFGHIJ'
print(alphabets_string[0]) #A
print(alphabets_string[1]) #B
print(alphabets_string[4]) #E
print(alphabets_string[-1]) #J
for 반복문
두 자료형은 공통적으로 인덱싱이 가능하므로 for 반복문에도 활용할 수 있습니다.
# 알파벳 리스트의 반복문
alphabets_list = ['C', 'O', 'D', 'E', 'I', 'T']
for alphabet in alphabets_list:
print(alphabet)
# 알파벳 문자열의 반복문
alphabets_string = 'CODEIT'
for alphabet in alphabets_string:
print(alphabet)
슬라이싱 (Slicing)
# 알파벳 리스트의 슬라이싱
alphabets_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print(alphabets_list[0:5])
print(alphabets_list[4:])
print(alphabets_list[:4])
# 알파벳 문자열의 슬라이싱
alphabets_string = 'ABCDEFGHIJ'
print(alphabets_string[0:5])
print(alphabets_string[4:])
print(alphabets_string[:4])
덧셈 연산
# 리스트의 덧셈 연산
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
list3 = list1 + list2
print(list3) # [1, 2, 3, 4, 5, 6, 7, 8]
# 문자열의 덧셈 연산
string1 = '1234'
string2 = '5678'
string3 = string1 + string2
print(string3) # 12345678
len 함수
# 리스트의 길이 재기
print(len(['H', 'E', 'L', 'L', 'O'])) # 5
# 문자열의 길이 재기
print(len("Hello, world!")) # 13
차이점 : Mutable (수정 가능) vs. Immutable (수정 불가능)
리스트는 데이터를 바꿀 수 있지만, 문자열은 데이터를 바꿀 수 없다는 것이다.
# 리스트 데이터 바꾸기
numbers = [1, 2, 3, 4]
numbers[0] = 5
print(numbers) # [5, 2, 3, 4]
# 문자열 데이터 바꾸기
name = "codeit"
name[0] = "C"
print(name) # 수정 불가능
이번 글에서는 리스트 / for반복문 / 사전 / aliasing / 리스트와 문자열의 공통점과 차이점이 포함된 내용을 정리했으며, 파이썬을 통해 코드를 작성하는 경우에 모두 필수적인 개념들로 꼭 잊지 말고 알아가야 하는 내용인 것 같습니다.
글 읽어주셔서 감사합니다
출처 및 참고자료 : 코드잇 사이트 강의 '프로그래밍과 데이터' https://www.codeit.kr/topics/python-programming-and-data
'프로그래밍 언어 > Python' 카테고리의 다른 글
[파이썬 개념 정리 6]Matplotlib 라이브러리 개념 정리 (0) | 2024.06.29 |
---|---|
[파이썬 개념 정리 5]Numpy 라이브러리 개념 정리 (0) | 2024.06.29 |
[파이썬 개념 정리 4]파이썬 응용 개념 정리 (0) | 2024.06.28 |
[파이썬 개념 정리 2] 파이썬의 개념 기초 정리 2️⃣ (0) | 2024.06.21 |
[파이썬 개념 정리 1] 파이썬의 개념 기초 정리 1️⃣ (0) | 2024.06.21 |
데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!