방명록
- 리스트, 튜플, 딕셔너리, 집합, 불, 조건문, 반복문2024년 02월 08일 07시 14분 25초에 업로드 된 글입니다.작성자: 재형이반응형
- 내일이 벌써 설날이다
- 오늘은 일찍 퇴근시켜줄 것 같다 그래서 기분이 좋다ㅎㅎ
- 친구를 도와서 게임을 같이 만들고 있는데 새로운 서비스들을 적용시켜보려고 하니 너무 재밌다
- 는 다시 본론으로 돌아와서 파이썬 자료형 마무리하고 조건문, 반복문 Let's Go~
1. 파이썬(Python) 리스트 자료형과 튜플 자료형
1-1. 리스트 자료형
- 리스트는 대괄호 안에 원소들을 쉼표로 구분하여 넣을 수 있다
- 일반적으로 리스트의 각 원소는 같은 자료형이도록 쓰지만, 서로 다른 자료형의 데이터가 들어갈 수 있다
data = ["Hello", 7, 0.5] print(data) # ['Hello', 7, 0.5]
- 리스트에 대해서 인덱싱과 슬라이싱을 사용할 수 있다
evens = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] print(evens[3]) # 4번째 원소 print(evens[0:5]) # 1번째 원소부터 5번째 원소까지 # 8 # [2, 4, 6, 8, 10]
- 리스트 덧셈: 리스트끼리 더할 수 있는데, 이때는 단순히 두 리스트를 이어 붙인 결과가 반환된다
a = [1, 2, 3, 4, 5] b = [6, 7, 8, 9, 10] print(a + b) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 리스트 중첩: 리스트는 다중(2중, 3중 등)으로 중첩하여 사용할 수 있다
arr = [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15] ] print(arr) # 리스트 전체 출력 print(arr[0][1]) # 1행 2열의 원소 출력 print(arr[2][2]) # 3행 3열의 원소 출력 # [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]] # 2 # 13
- 리스트의 요소에 접근하여 값을 변경할 수 있다
a = [5, 6, 7, 8, 9] a[4] = 5 print(a) a[0] = 1 print(a) a[1:4] = [2, 3, 4] # 특정 구간을 한꺼번에 바꾸기 print(a) # [5, 6, 7, 8, 5] # [1, 6, 7, 8, 5] # [1, 2, 3, 4, 5]
- 리스트 메서드
- insert(삽입할 인덱스, 삽입할 원소): 리스트에 원소를 삽입한다
- append(삽입할 원소): 리스트의 마지막 위치에 원소를 삽입한다
- remove(삭제할 원소): 리스트에서 특정한 값을 가지는 원소를 삭제한다
- sort(): 리스트의 원소를 정렬한다
arr = [1, 3, 4] # 리스트 변수 초기화 print(arr) arr.insert(1, 2) # 인덱스 1의 위치에 원소 2를 삽입 print(arr) arr.append(5) # 마지막 위치에 5를 삽입 print(arr) arr.remove(3) # 원소 3을 제거 print(arr) arr.sort() # 오름차순 정렬 print(arr) arr.sort(reverse=True) # 내림차순 정렬 print(arr) # [1, 3, 4] # [1, 2, 3, 4] # [1, 2, 3, 4, 5] # [1, 2, 4, 5] # [1, 2, 4, 5] # [5, 4, 2, 1]
- 2차원 이상의 리스트를 초기화할 때는 리스트 컴프리헨션(list comprehension)을 사용한다
# 원소를 8개 포함하는 1차원 리스트 초기화 arr = [5] * 8 print(arr) # 4 X 5 크기를 갖는 2차원 리스트 초기화 arr = [[0] * 5 for _ in range(4)] print(arr) # 4 X 5 크기를 갖는 2차원 리스트 초기화 arr = [[i] * 5 for i in range(4)] print(arr) # 4 X 5 크기를 갖는 2차원 리스트 초기화 arr = [[(i * 5) + j for j in range(5)] for i in range(4)] print(arr) # [5, 5, 5, 5, 5, 5, 5, 5] # [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] # [[0, 0, 0, 0, 0], [1, 1, 1, 1, 1], [2, 2, 2, 2, 2], [3, 3, 3, 3, 3]] # [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]]
1-2. 튜플 자료형
- 튜플(tuple) 자료형은 리스트와 유사하지만, 그 특징이 조금씩 다르다
- 리스트는 대괄호 []를 이용하지만, 튜플은 소괄호 ()을 사용한다
- 리스트는 값을 변경할 수 있지만, 튜플은 값을 변경할 수 없다
- 값이 변경되면 안 되는 경우, 튜플을 사용하면 효과적이다
- 관행적으로, 각 데이터의 성질이 다를 수 있을 때 일반적으로 튜플을 사용한다
- 예시) 최단 경로 알고리즘에서 (비용, 노드 번호) 형태로 데이터를 묶어 사용하곤 한다
# 튜플은 리스트와 사용 방법이 유사하다. a = (1, 2, 3, 4, 5) print(a) print(a[:3]) print(a * 2) b = (6, 7, 8, 9, 10) print(a + b) # 두 튜플(tuple)을 더한 값 출력 # (1, 2, 3, 4, 5) # (1, 2, 3) # (1, 2, 3, 4, 5, 1, 2, 3, 4, 5) # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
2. 파이썬(Python) 딕셔너리 자료형과 집합 자료형
1. 딕셔너리(Dictionary) 자료형
- 데이터를 키(key)와 값(value) 쌍의 형태로 저장할 때 사용할 수 있다
- 딕셔너리에 키와 값을 입력할 때는 "사전 데이터[키] = 값" 과 같은 형태로 입력할 수 있다
arr1 = ["컴퓨터", "키보드", "모니터"] arr2 = ["computer", "keyboard", "monitor"] data = {} for i in range(3): data[arr1[i]] = arr2[i] print(data) # {'컴퓨터': 'computer', '키보드': 'keyboard', '모니터': 'monitor'}
- 모든 키(key)를 하나씩 확인할 때는 keys() 메서드를 사용할 수 있다
data = {} data['apple'] = "사과" data["banana"] = "바나나" data["carrot"] = "당근" for key in data.keys(): print("key:", key, ", value:", data[key]) # key: apple , value: 사과 # key: banana , value: 바나나 # key: carrot , value: 당근
- 사전 자료형은 특정한 데이터의 등장 횟수를 셀 때 효과적으로 사용할 수 있다
data = [1, 3, 3, 5, 4, 3, 1, 4] counter = {} for x in data: if x not in counter: counter[x] = 1 else: counter[x] += 1 print(counter) # {1: 2, 3: 3, 5: 1, 4: 2}
2. 집합(Set) 자료형
- 데이터의 중복을 허용하지 않고, 순서가 상관없을 때 사용하는 자료형이다
- 특정한 데이터가 등장한 적 있는지 체크할 때 효과적으로 사용된다
- 데이터를 삽입할 때는 add() 메서드를 사용한다
data = [1, 3, 3, 5, 4, 3, 1, 4] visited = set() for x in data: if x not in visited: visited.add(x) else: print("중복 원소 발견:", x) print("고유한 원소들:", visited) # 중복 원소 발견: 3 # 중복 원소 발견: 3 # 중복 원소 발견: 1 # 중복 원소 발견: 4 # 고유한 원소들: {1, 3, 4, 5}
- 집합 자료형은 remove() 메서드를 사용하여 원소를 제거할 수 있다
- 집합 자료형 list() 함수를 이용하여 리스트로 변경할 수 있다
data = {5, 6, 7, 8, 9} print(data) data.remove(7) print(data) arr = list(data) print(arr) # {5, 6, 7, 8, 9} # {5, 6, 8, 9} # [5, 6, 8, 9]
- 집합 자료형은 다양한 연산자를 제공한다.
- 합집합 연산자: |
- 교집합 연산자: &
- 차집합 연산자: -
data1 = {3, 4, 5, 6, 7} data2 = {6, 7, 8, 9, 10} data = data1 | data2 # 합집합 print(data) data = data1 & data2 # 교집합 print(data) data = data1 - data2 # 차집합 print(data) # {3, 4, 5, 6, 7, 8, 9, 10} # {6, 7} # {3, 4, 5}
3. 파이썬(Python) 참/거짓 자료형 - 불(bool)
- 불(bool) 자료형은 참(true)과 거짓(false)을 표현하기 위해 사용한다
- 참(True): 경우에 따라서 1로 표현하기도 한다
- 거짓(False): 경우에 따라서 0로 표현하기도 한다
- 파이썬(python) 자료형은 참과 거짓이 나누어진다
- 거짓(False): 0, 비어있는 리스트/튜플/사전, None 등
- 참(True): 이외에 실제 의미 있는 값들
print(bool(7)) print(bool(1)) print(bool(0)) print(bool("Hello World")) print(bool("")) print(bool([1, 2, 3])) print(bool([])) print(bool(())) # True # True # False # True # False # True # False # False
- 논리 연산자를 사용하면, 불(bool) 자료형에 대한 연산이 가능하다
- x or y: x와 y 중에 하나라도 참일 때 참(True), 아니면 거짓(False)
- x and y: x와 y가 모두 참일 때 참(True), 아니면 거짓(False)
- not x: x가 참일 때 거짓(False), 거짓이면 참(True)
- x in arr: x가 arr 안에 포함될 때 참(True), 아니면 거짓(False)
- x not in arr: x가 arr 안에 포함되지 않을 때 참(True), 아니면 거짓(False)
a = True b = False print(a or b) print(a and b) print(not b) print(7 in [3, 5, 7]) print(8 not in [2, 4, 6, 8]) # True # False # True # True # False
4. 파이썬(Python) 조건문
- Python에서는 프로그램을 제어하기 위한 문법으로 조건문과 반복문을 제공한다
- if 조건식:
# 참인 경우 실행할 코드
else:
# 거짓인 경우 실행할 코드 - if에 해당하지 않는다면 elif가 수행되고, 위쪽에 있는 모든 조건문에 해당하지 않을 때 else 구문이 실행된다
- 전체 형태는 if ~ elif ~ else 형태로 사용된다
- 이때 elif나 else는 옵션으로, 없어도 되는 키워드이다
score = 90 if score >= 94: # 94점부터 100점 print('1등급입니다.') elif score >= 87: # 93점부터 87점 print('2등급입니다.') elif score >= 81: # 86점부터 81점 print('3등급입니다.') else: print('3등급 미만입니다.') # 2등급입니다.
5. 파이썬(Python) 반복문
- 프로그램에서 반복적인 작업을 수행해야 할 때, 반복문을 사용한다
- for 원소 in 시퀀스 데이터:
원소를 처리하는 코드 - for 문법은 range()와 함께 사용할 수 있다.
- range(start, end)
result = 0 for i in range(1, 51): # 1부터 50까지 방문 result += i print(result) # 1275
- enumerate() 함수를 사용하면 인덱스와 함께 반복할 수 있다
name_list = ['홍길동', '이순신', '장보고'] for i, element in enumerate(name_list): print(i, element) # 0 홍길동 # 1 이순신 # 2 장보고
- 반복문은 중첩해서 사용할 수도 있다
# 구구단 for i in range(1, 10): for j in range(1, 10): print(i, "X", j, "=", i * j) # 1 X 1 = 1 # 1 X 2 = 2 # 1 X 3 = 3 # 1 X 4 = 4 # 1 X 5 = 5 # 1 X 6 = 6 # 1 X 7 = 7 # 1 X 8 = 8 # 1 X 9 = 9 # 2 X 1 = 2 # 2 X 2 = 4 # 2 X 3 = 6 # 2 X 4 = 8 # 2 X 5 = 10 # 2 X 6 = 12 # 2 X 7 = 14 # 2 X 8 = 16 # 2 X 9 = 18 # 3 X 1 = 3 # 3 X 2 = 6 # 3 X 3 = 9 # 3 X 4 = 12 # 3 X 5 = 15 # 3 X 6 = 18 # 3 X 7 = 21 # 3 X 8 = 24 # 3 X 9 = 27 # 4 X 1 = 4 # 4 X 2 = 8 # 4 X 3 = 12 # 4 X 4 = 16 # 4 X 5 = 20 # 4 X 6 = 24 # 4 X 7 = 28 # 4 X 8 = 32 # 4 X 9 = 36 # 5 X 1 = 5 # 5 X 2 = 10 # 5 X 3 = 15 # 5 X 4 = 20 # 5 X 5 = 25 # 5 X 6 = 30 # 5 X 7 = 35 # 5 X 8 = 40 # 5 X 9 = 45 # 6 X 1 = 6 # 6 X 2 = 12 # 6 X 3 = 18 # 6 X 4 = 24 # 6 X 5 = 30 # 6 X 6 = 36 # 6 X 7 = 42 # 6 X 8 = 48 # 6 X 9 = 54 # 7 X 1 = 7 # 7 X 2 = 14 # 7 X 3 = 21 # 7 X 4 = 28 # 7 X 5 = 35 # 7 X 6 = 42 # 7 X 7 = 49 # 7 X 8 = 56 # 7 X 9 = 63 # 8 X 1 = 8 # 8 X 2 = 16 # 8 X 3 = 24 # 8 X 4 = 32 # 8 X 5 = 40 # 8 X 6 = 48 # 8 X 7 = 56 # 8 X 8 = 64 # 8 X 9 = 72 # 9 X 1 = 9 # 9 X 2 = 18 # 9 X 3 = 27 # 9 X 4 = 36 # 9 X 5 = 45 # 9 X 6 = 54 # 9 X 7 = 63 # 9 X 8 = 72 # 9 X 9 = 81
- 중첩 반복문으로 소수 판별 알고리즘 구현해보기
n = 10 for x in range(2, n + 1): prime_number = True for y in range(2, x): if x % y == 0: # 나누어 떨어지는 수가 있다면 print(x, "=", y, "*", x // y) prime_number = False break # 반복문 탈출 if prime_number: print(x, "은(는) 소수입니다.") # 2 은(는) 소수입니다. # 3 은(는) 소수입니다. # 4 = 2 * 2 # 5 은(는) 소수입니다. # 6 = 2 * 3 # 7 은(는) 소수입니다. # 8 = 2 * 4 # 9 = 3 * 3 # 10 = 2 * 5
반응형'프로그래밍 언어 > Python' 카테고리의 다른 글
파일 입출력, 함수, 클래스, 예외 처리 (0) 2024.02.09 개발환경, 기본 입출력, 정수 자료형, 실수 자료형, 문자열 자료형 (4) 2024.02.07 큐, 덱, 이진 탐색 트리, 우선 순위 큐, 그래프 (2) 2024.02.06 배열, 연결리스트, 파이썬 리스트 자료형,스택 (2) 2024.02.05 다음글이 없습니다.이전글이 없습니다.댓글