프로그래밍 언어/Python

[파이썬 개념 정리 3]파이썬의 개념 기초 정리 3️⃣

ourkofe's story 2024. 6. 28. 00:29

이번 글은 코드잇 강의를 수강하면서 배운 내용을 주로 하여 정리되어 있습니다. (코드잇 스프린트 데이터 애널리스트 트랙 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

 

728x90