no image
[Python] range함수와 응용법들
목차 range 함수 기본 사용법 range와 list 같이 사용하기 range에 수식을 넣어 사용하기 자주 발생할 수 있는 실수들 range로 나누기 연산자(/) 사용 방법 range 함수 기본 사용법 파이썬에서 range() 함수는 연속된 숫자들을 만들어내는 데 사용되는 내장 함수입니다. range()는 주로 for 반복문과 함께 사용되어 숫자들을 반복 처리할 때 유용합니다. range() 함수는 아래와 같은 구문을 사용합니다. range(stop) range(start, stop) range(start, stop, step) start: (옵션) 시작하는 숫자. 기본값은 0입니다. stop: 반드시 지정해야 하는 값으로, 생성할 숫자 범위의 끝을 나타냅니다. 이 값은 범위에 포함되지 않습니다. st..
2023.04.23
[Python] 파이썬 딕셔너리(Dictionary)란?
목차 키-값 쌍이란? 딕셔너리(Dictionary) 자주 발생하는 실수 유형 키-값 쌍이란? Python 딕셔너리에서 키와 값은 키-값 쌍을 형성하는 두 가지 주요 구성 요소입니다. 키(key) 키는 딕셔너리에 저장된 해당 값을 참조하는 데 사용되는 고유 식별자입니다. 키는 일반적으로 문자열이나 숫자이지만 튜플(불변 요소만 포함)과 같은 다른 불변 데이터 유형일 수도 있습니다. 딕셔너리의 각 키는 고유해야 합니다. 기존 키에 새 값을 할당하면 이전 값이 대체됩니다. 값(value) 값은 딕셔너리의 해당 키와 관련된 데이터입니다. 값은 문자열, 숫자, 목록, 튜플 또는 기타 딕셔너리과 같은 모든 데이터 유형이 될 수 있습니다. 값은 딕셔너리에서 중복될 수 있습니다. 여러 키가 동일한 값을 가질 수 있습니다..
2023.04.22
no image
[Python] 파이썬 for 문과 응용
목차 for 문 중접 리스트, 중첩 반복 확산 연산자 for 문 Python의 'for' 문은 시퀀스(예: 리스트, 튜플, 문자열 또는 기타 반복 가능한 객체)를 반복하는 데 사용됩니다. 'for' 루프는 시퀀스의 각 항목을 반복하고 각 항목에 대한 코드 블록을 실행합니다. Python에서 for 루프의 일반적인 구문은 다음과 같습니다. for variable in iterable: # Code to execute for each item in the iterable 여기서 변수는 iterable의 각 항목 값을 한 번에 하나씩 취하는 임시 변수입니다. iterable은 리스트, 튜플, 문자열 또는 기타 반복 가능한 유형과 같이 반복될 수 있는 객체입니다. 다음은 for 루프를 사용하여 숫자 리스트을 반..
2023.04.22
no image
[Python] 파이썬 list 함수와 다양한 활용법
목록 목록 선언 및 요소 액세스 index를 사용하여 요소에 접근하기 list를 사용해 요소 수정하기 리스트 내에 특정값 유무 확인 Python에서 list는 여러 값을 저장할 수 있는 순서가 지정된 모음입니다. 목록은 대괄호([])를 사용하여 생성되며 각 요소는 쉼표(,)로 구분됩니다. 목록은 다양한 데이터 유형을 저장할 수 있으며 중첩 목록도 지원할 수 있습니다. 이 때 요소란 대괄호 안에 있는 자료를 뜻합니다. 예를 들면 다음과 같습니다. [요소,요소,요소...] 목록 선언 및 요소 액세스 1. 목록 만들기 my_list = [1, 2, 3, 4, 5] 2. 목록의 요소에 액세스 목록의 요소에 액세스하려면 인덱싱을 사용할 수 있습니다. Python에서 인덱싱은 0부터 시작합니다. 따라서 첫 번째 요..
2023.04.22
no image
[Python] IF 함수를 논리적으로 False로 만들기
이전 포스팅에서 if문에 대해서 다뤘는데, 실수로 이 부분을 깜빡해 따로 작성하게 되었습니다. if 문은 조건이 논리적으로 True일 때 실행되는 코드 블록을 정의합니다. 일부 값은 논리적으로 False로 평가되므로 if 문이 실행되지 않습니다. Python에서 False로 평가되는 값은 다음과 같습니다: 1. `None`: Python에서는 None이 정의되지 않은 값을 나타내며, 논리적으로 False입니다. 2. 숫자 0: 정수 0과 실수 0.0은 논리적으로 False입니다. 3. 빈 문자열 `''`: 문자열이 비어 있으면 논리적으로 False입니다. 4. 빈 리스트 `[]`: 리스트가 비어 있으면 논리적으로 False입니다. 5. 빈 튜플 `()`: 튜플이 비어 있으면 논리적으로 False입니다. ..
2023.04.21
no image
[Python] if 함수와 응용
목록 if 함수 시간 표현 홀짝 구분 if 함수 `if` 문은 Python에서 조건부 실행을 수행하기 위해 사용되는 기본 제어 구조입니다. `if` 문은 주어진 조건이 참(`True`)인 경우에만 해당 블록의 코드를 실행합니다. 1. 기본 예시 age = 18 if age >= 18: print("You are an adult.") 이 예시에서 `age >= 18`이라는 조건이 참(`True`)이므로, `print("You are an adult.")` 구문이 실행됩니다. 2. 여러 조건 사용 `if` 문은 `elif`(else if의 줄임말)와 `else` 절과 함께 사용되어 다양한 경우를 처리할 수 있습니다. temperature = 25 if temperature = 0 and temperature..
2023.04.21
반응형

목차

  1. range 함수 기본 사용법
  2. range와 list 같이 사용하기
  3. range에 수식을 넣어 사용하기
  4. 자주 발생할 수 있는 실수들
  5. range로 나누기 연산자(/) 사용 방법

range 함수 기본 사용법

파이썬에서 range() 함수는 연속된 숫자들을 만들어내는 데 사용되는 내장 함수입니다. range()는 주로 for 반복문과 함께 사용되어 숫자들을 반복 처리할 때 유용합니다.

range() 함수는 아래와 같은 구문을 사용합니다.

range(stop)
range(start, stop)
range(start, stop, step)
  • start: (옵션) 시작하는 숫자. 기본값은 0입니다.
  • stop: 반드시 지정해야 하는 값으로, 생성할 숫자 범위의 끝을 나타냅니다. 이 값은 범위에 포함되지 않습니다.
  • step: (옵션) 각 숫자들 사이의 간격. 기본값은 1입니다.


예시:

# 1. 0부터 4까지의 숫자 생성
for i in range(5):
    print(i) # 결과: 0, 1, 2, 3, 4

# 2. 2부터 8까지의 숫자 생성 (8은 포함되지 않음)
for i in range(2, 8):
    print(i) # 결과: 2, 3, 4, 5, 6, 7

# 3. 2부터 15까지의 숫자 생성, 간격은 3
for i in range(2, 15, 3):
    print(i) # 결과: 2, 5, 8, 11, 14


range() 함수는 범위의 숫자를 생성할 때 지정된 조건에 따라 값을 생성하므로 메모리를 효율적으로 사용할 수 있습니다. 이는 큰 범위의 숫자를 처리할 때 유용합니다.


range와 list 같이 사용하기

파이썬에서 list()와 range() 함수를 함께 사용하면, 특정 범위의 숫자들을 포함하는 리스트를 생성할 수 있습니다. range() 함수를 사용하여 원하는 범위의 숫자를 생성한 후, list() 함수를 사용하여 이를 리스트로 변환하면 됩니다.

# 1. 0부터 4까지의 숫자를 포함하는 리스트 생성
numbers = list(range(5))
print(numbers)  # 결과: [0, 1, 2, 3, 4]

# 2. 2부터 8까지의 숫자를 포함하는 리스트 생성 (8은 포함되지 않음)
numbers = list(range(2, 8))
print(numbers)  # 결과: [2, 3, 4, 5, 6, 7]

# 3. 2부터 15까지의 숫자를 포함하는 리스트 생성, 간격은 3
numbers = list(range(2, 15, 3))
print(numbers)  # 결과: [2, 5, 8, 11, 14]


이렇게 list()와 range()를 함께 사용하면, 원하는 범위의 숫자들로 구성된 리스트를 간편하게 생성할 수 있습니다. 하지만 주의할 점은, 큰 범위의 숫자들을 리스트로 변환할 경우 메모리 사용량이 높아질 수 있다는 것입니다. 이 경우, range() 함수를 직접 사용하는 것이 메모리 효율성 측면에서 더 좋습니다.


range에 수식을 넣어 사용하기

파이썬의 range() 함수는 매개 변수에 수식을 포함할 수 있습니다. 이렇게 하면 다양한 방식으로 범위를 생성할 수 있습니다. 다음은 수식을 사용하는 몇 가지 예시입니다:

# 1. 1부터 10까지의 제곱수를 생성하는 리스트
squares = [x**2 for x in range(1, 11)]
print(squares)  # 결과: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 2. 5부터 20까지의 숫자 중 짝수만 포함하는 리스트
even_numbers = list(range(5 + (5 % 2), 21, 2))
print(even_numbers)  # 결과: [6, 8, 10, 12, 14, 16, 18, 20]

# 3. 1부터 10까지의 숫자 중 3의 배수만 포함하는 리스트
multiples_of_three = list(range(3, 11, 3))
print(multiples_of_three)  # 결과: [3, 6, 9]

# 4. 10부터 50까지의 숫자 중 5씩 증가하는 리스트
increment_by_five = list(range(10, 51, 5))
print(increment_by_five)  # 결과: [10, 15, 20, 25, 30, 35, 40, 45, 50]


이러한 방식으로 range() 함수에 수식을 포함시켜 다양한 범위의 숫자들로 구성된 리스트를 생성할 수 있습니다. 이렇게 유연하게 사용하면 복잡한 조건과 범위를 만족하는 숫자 리스트를 간단하게 구성할 수 있습니다.


자주 발생할 수 있는 실수들

방금 제시한 코드를 작성하면서 발생할 수 있는 일반적인 실수들은 다음과 같습니다:

1. 오프 바이 원 (Off-by-one) 오류: range() 함수의 끝 값은 범위에 포함되지 않기 때문에, 끝 값을 원하는 마지막 숫자보다 1만큼 크게 설정해야 합니다. 이 점을 간과하면 원하는 결과를 얻지 못할 수 있습니다.

# 잘못된 예시
wrong_range = list(range(1, 10))  # 결과: [1, 2, 3, 4, 5, 6, 7, 8, 9] - 10이 빠짐

# 올바른 예시
correct_range = list(range(1, 11))  # 결과: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 또는
correct_range = list(range(1, 10 + 1))  # 결과: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


2. 잘못된 시작값: 시작값을 잘못 설정하면 원하지 않는 결과를 얻을 수 있습니다. 시작값을 설정할 때 주의 깊게 검토해야합니다.

# 잘못된 예시
wrong_step = list(range(1, 11, 2))  # 결과: [1, 3, 5, 7, 9] - 짝수가 빠짐

# 올바른 예시
correct_step = list(range(2, 11, 2))  # 결과: [2, 4, 6, 8, 10]


3. 수식 오류: range() 함수의 매개 변수에 사용되는 수식이 잘못되면, 예상치 못한 결과를 얻을 수 있습니다. 수식을 사용할 때 계산이 올바르게 수행되는지 확인해야합니다.

# 잘못된 예시
wrong_expression = list(range(5 + (5 % 3), 21, 2))  # 결과: [7, 9, 11, 13, 15, 17, 19] - 시작점이 6이 아닌 7부터 시작

# 올바른 예시
correct_expression = list(range(5 + (5 % 2), 21, 2))  # 결과: [6, 8, 10, 12, 14, 16, 18, 20]


위와 같은 실수를 피하기 위해 코드를 작성할 때 주의를 기울이고, 범위와 조건을 정확하게 확인해야합니다. 또한, 코드를 실행하여 결과를 검증하고, 필요한 경우 수정해야합니다.


range로 나누기 연산자(/) 사용 방법

파이썬에서 나누기 연산자(/)는 두 숫자를 나누는 연산을 수행합니다. 그러나 range() 함수에 직접 사용할 수는 없습니다. 그 대신, range() 함수의 시작 값, 끝 값, 또는 증가값에 수식을 사용하여 나눗셈 연산을 적용할 수 있습니다.

예를 들어, 1부터 20까지의 숫자 중에서 2로 나누어 떨어지는 숫자들만 생성하려면 다음과 같이 range() 함수와 나누기 연산자를 사용할 수 있습니다.

even_numbers = list(range(2, 21, 2))
print(even_numbers)  # 결과: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]


위의 코드에서는 range() 함수의 시작 값이 2, 끝 값이 21, 그리고 증가값이 2로 설정되어 있습니다. 이렇게 하면 2로 나누어 떨어지는 짝수만 생성되는 범위가 만들어집니다.

또 다른 예로, 1부터 10까지의 숫자를 반으로 나누어 출력하려면 다음과 같이 할 수 있습니다.

half_numbers = [x / 2 for x in range(1, 11)]
print(half_numbers)  # 결과: [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]

하지만 정수만 출력하고 싶다면 이 연산자(//)를 사용합니다. 이 연산자는 두 숫자를 나눈 후 몫을 반환합니다. 그러나 위 예시와 마찬가지로 range() 함수에 직접 사용할 수는 없습니다. 따라서 다음과 같이 사용합니다.

예를 들어, 1부터 10까지의 숫자를 2로 나눈 몫을 구하려면 다음과 같이 할 수 있습니다.

integer_division = [x // 2 for x in range(1, 11)]
print(integer_division)  # 결과: [0, 1, 1, 2, 2, 3, 3, 4, 4, 5]


 

반응형
반응형

목차

  1. 키-값 쌍이란?
  2. 딕셔너리(Dictionary)
  3. 자주 발생하는 실수 유형

키-값 쌍이란?

Python 딕셔너리에서 키와 값은 키-값 쌍을 형성하는 두 가지 주요 구성 요소입니다.

 

키(key)

  • 키는 딕셔너리에 저장된 해당 값을 참조하는 데 사용되는 고유 식별자입니다.
  • 키는 일반적으로 문자열이나 숫자이지만 튜플(불변 요소만 포함)과 같은 다른 불변 데이터 유형일 수도 있습니다.
  • 딕셔너리의 각 키는 고유해야 합니다. 기존 키에 새 값을 할당하면 이전 값이 대체됩니다.

 

값(value)

  • 값은 딕셔너리의 해당 키와 관련된 데이터입니다.
  • 값은 문자열, 숫자, 목록, 튜플 또는 기타 딕셔너리과 같은 모든 데이터 유형이 될 수 있습니다.
  • 값은 딕셔너리에서 중복될 수 있습니다. 여러 키가 동일한 값을 가질 수 있습니다.


다음은 키와 값이 있는 Python 딕셔너리의 예입니다.

person = {
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "job": "Software Engineer"
}


이 예에서 키는 "name", "age", "city" 및 "job"이고 값은 "Alice", 30, "New York" 및 "Software Engineer"입니다.


딕셔너리(Dictionary)

Python 딕셔너리는 각 키가 고유해야 하는 키-값 쌍의 변경 가능하고 정렬되지 않은 모음입니다. 딕셔너리는 다른 프로그래밍 언어에서 연관 배열, 해시 맵 또는 해시 테이블이라고도 합니다. 이들은 Python에서 해시 테이블로 구현되어 키를 기반으로 요소에 대한 빠른 액세스, 삽입 및 삭제를 제공합니다.

 

Python 딕셔너리을 선언하려면 중괄호 {}를 사용하고 콜론을 사용하여 키-값 쌍을 구분합니다. 특정 키와 관련된 값에 액세스하려면 대괄호 []를 사용할 수 있습니다. 예를 들면 다음과 같습니다.예를 들면 다음과 같습니다.

# Declare a 딕셔너리
book = {
    "title": "The Catcher in the Rye",
    "author": "J.D. Salinger",
    "year": 1951,
    "genre": "Fiction"
}

# Accessing a value by key
print(book["title"])  # Output: The Catcher in the Rye

 

이 예에서 book 딕셔너리에는 "title", "author", "year" 및 "genre"라는 4개의 키-값 쌍이 있습니다. 키와 관련된 값에 액세스하려면 print() 명령문에 표시된 대로 대괄호 []와 키를 사용해야합니다.


딕셔너리에 대한 몇 가지 일반적인 작업은 다음과 같습니다.

1. 딕셔너리 생성

# 딕셔너리 생성
person = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

# 키를 이용한 값 접근
print(person["name"])  # Output: John



2. 요소 추가 또는 업데이트

person["country"] = "USA"  # 새로운 키-값 쌍 추가
person["age"] = 31         # "age" 키에 연결된 값을 업데이트


3. 키-값 쌍 제거

del person["age"]  # "age" 키에 연결된 키-값 쌍 삭제


4. 딕셔너리에 키가 존재하는지 확인

 

if "name" in person:
    print("딕셔너리에 'name' 키가 존재합니다.")


5. 딕셔너리 반복

 

# 키를 이용한 반복(iterate)
for key in person:
    print(key)

# 값에 대한 반복(iterate)
for value in person.values():
    print(value)

# 키-값 쌍에 대한 반복(iterate)
for key, value in person.items():
    print(f"{key}: {value}")



6. 딕셔너리 이해
Comprehension을 나열하는 구문과 유사하지만 중괄호 {}를 사용하는 딕셔너리 이해를 사용하여 딕셔너리을 만들 수 있습니다.

 

squares = {x: x**2 for x in range(1, 6)}
print(squares)  # Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}


딕셔너리는 Python의 강력하고 다양한 데이터 구조로, 키를 기반으로 데이터를 구성하고 액세스하는 효율적인 방법을 제공합니다.

 

7. 딕셔너리과 함께 get() 함수를 사용하는 예

# 딕셔너리 정의
student_grades = {
    "John": 85,
    "Sarah": 90,
    "Anna": 78,
    "Tom": 92
}

# get() 함수를 사용하여 키로 값을 가져옵니다.
johns_grade = student_grades.get("John")
print("John's grade:", johns_grade)  # 출력: John's grade: 85

# get() 함수를 사용하여 존재하지 않는 키의 경우 기본값을 설정합니다.
non_existent_key = "Michael"
michaels_grade = student_grades.get("Michael", "Not found")
print("Michael's grade:", michaels_grade)  # 출력: Michael's grade: Not found


이 예에서는 학생 이름을 키로, 각 성적을 값으로 포함하는 'student_grades'라는 딕셔너리을 정의합니다. 그런 다음 get() 함수를 사용하여 "John"과 "Michael"의 등급에 액세스합니다. "Michael"이 딕셔너리에 없기 때문에 get() 함수는 기본값 "찾을 수 없음"을 반환합니다.


자주 발생하는 실수 유형

다음은 Python 딕셔너리 코드를 작성할 때 발생하는 몇 가지 일반적인 실수와 이를 수정하는 방법입니다.


1. 변경 가능한 데이터 유형을 키로 사용

문제: 목록과 같은 변경 가능한 데이터 유형을 딕셔너리의 키로 사용하면 TypeError가 발생합니다.
해결 방법: 문자열, 숫자 또는 튜플(불변 요소 포함)과 같은 불변 데이터 유형을 키로 사용합니다.

# Incorrect
my_dict = {['a', 'b']: 1}

# Correct
my_dict = {('a', 'b'): 1}


2. 요소 액세스에 잘못된 구문 사용

문제: dict[key] 대신 dict.key와 같이 잘못된 구문을 사용하여 딕셔너리의 요소에 액세스하려고 합니다.
해결 방법: 올바른 구문 dict[key]를 사용하여 딕셔너리의 요소에 액세스해야합니다.

# Incorrect
value = my_dict.key

# Correct
value = my_dict['key']


3. 존재하지 않는 키에 액세스

문제: 딕셔너리에 없는 키에 액세스하려고 하면 KeyError가 발생합니다.
해결 방법: 키를 찾을 수 없는 경우 기본값을 반환하는 get() 메서드를 사용하거나 in과 함께 조건문을 사용하여 키의 존재를 확인합니다.

# Incorrect
value = my_dict['non_existent_key']

# Correct
value = my_dict.get('non_existent_key', 'default_value')

# or
if 'non_existent_key' in my_dict:
    value = my_dict['non_existent_key']
else:
    value = 'default_value'


4. 잘못된 요소 추가 또는 업데이트

문제: dict[key] = value 대신 dict.key = value와 같이 잘못된 구문을 사용하여 딕셔너리에 요소를 추가하거나 업데이트하려고 합니다.
해결 방법: 올바른 구문인 dict[key] = value를 사용하여 딕셔너리에 요소를 추가하거나 업데이트합니다.

# Incorrect
my_dict.key = 'value'

# Correct
my_dict['key'] = 'value'


5. 적절한 들여쓰기를 사용하지 않음

문제: 코드 들여쓰기가 잘못되어 구문 오류 또는 예기치 않은 동작이 발생할 수 있습니다.
해결 방법: 각 들여쓰기 수준에 대해 4개의 공백 또는 단일 탭을 사용하여 Python의 적절한 들여쓰기 규칙을 따라야합니다.


이러한 일반적인 실수와 해결 방법을 알고 있으면 오류를 방지하고 Python에서 보다 효율적이고 정확한 딕셔너리 코드를 작성할 수 있습니다.

반응형
반응형

목차

  1. for 문
  2. 중접 리스트, 중첩 반복
  3. 확산 연산자

for 문

Python의 'for' 문은 시퀀스(예: 리스트, 튜플, 문자열 또는 기타 반복 가능한 객체)를 반복하는 데 사용됩니다. 'for' 루프는 시퀀스의 각 항목을 반복하고 각 항목에 대한 코드 블록을 실행합니다. Python에서 for 루프의 일반적인 구문은 다음과 같습니다.

for variable in iterable:
    # Code to execute for each item in the iterable


여기서 변수는 iterable의 각 항목 값을 한 번에 하나씩 취하는 임시 변수입니다. iterable은 리스트, 튜플, 문자열 또는 기타 반복 가능한 유형과 같이 반복될 수 있는 객체입니다.


다음은 for 루프를 사용하여 숫자 리스트을 반복하는 간단한 예입니다.

numbers = [1, 2, 3, 4, 5]

for num in numbers:
    print(num)


이 루프는 리스트의 각 숫자를 한 번에 하나씩 인쇄하여 다음과 같은 결과를 출력합니다.

1
2
3
4
5


문자열을 반복하는 또 다른 예입니다.

greeting = "Hello, World!"

for char in greeting:
    print(char)


이 루프는 문자열의 각 문자를 새 줄에 인쇄합니다.


Python의 'for' 루프는 다목적이며 다양한 상황에서 반복 가능한 객체를 반복하고 시퀀스의 각 항목에 대한 작업을 수행하는 데 사용할 수 있습니다.


중접 리스트, 중첩 반복

Python의 중첩 리스트는 다른 리스트을 요소로 포함하는 리스트입니다. 이는 행렬, 테이블 또는 계층 구조와 같은 복잡한 데이터 구조를 구성하고 나타내는 데 유용할 수 있습니다.


다음은 행렬을 나타내는 중첩 리스트의 예입니다.

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

 

중첩 반복은 중첩 리스트과 같은 중첩 데이터 구조를 반복하는 데 사용되는 다른 루프 내의 루프입니다. Python에서는 중첩된 for 루프를 사용하여 중첩된 리스트의 각 요소를 반복할 수 있습니다.

다음은 위에 정의된 행렬을 반복하기 위해 중첩 반복을 사용하는 예입니다.

for row in matrix:
    for element in row:
        print(element, end=' ')
    print()  # Print a newline character after each row


그러면 다음이 출력됩니다.

1 2 3
4 5 6
7 8 9


위의 예에서 외부 루프는 행렬(리스트의 리스트)의 각 행을 반복하고 내부 루프는 해당 행 내의 각 요소를 반복합니다. print 기능은 행의 각 요소를 공백으로 구분하여 표시하는 데 사용됩니다. print 함수의 end=' ' 매개변수는 각 요소 뒤에 줄 바꿈 대신 공백이 인쇄되도록 하는 반면 내부 루프 외부의 print() 문은 각 행 뒤에 줄 바꿈 문자를 인쇄하는 데 사용됩니다.

중첩 리스트과 중첩 반복은 Python의 강력한 도구로, 복잡한 데이터 구조로 작업하고 효율적으로 작업을 수행할 수 있습니다.


확산 연산자

Python에는 JavaScript 또는 다른 언어에서 찾을 수 있는 특정 "확산 연산자"가 없습니다. 그러나 Python은 별표(*) 연산자를 사용하여 "언패킹"이라는 유사한 메커니즘을 제공합니다. 이 연산자는 iterable(예: 리스트, 튜플 또는 집합)에서 요소를 압축 해제하고 별도의 위치 인수로 함수에 전달하거나 새 리스트, 튜플 또는 집합으로 병합하는 데 사용할 수 있습니다.


다음은 Python에서 별표(*) 연산자를 사용하는 방법에 대한 몇 가지 예입니다.


1. 리스트에서 요소 압축 풀기:

def print_numbers(a, b, c):
    print(f'a: {a}, b: {b}, c: {c}')

numbers = [1, 2, 3]
print_numbers(*numbers)  # Output: a: 1, b: 2, c: 3

2. 여러 리스트을 새 리스트으로 병합:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = [*list1, *list2]
print(merged_list)  # Output: [1, 2, 3, 4, 5, 6]


3. 튜플 또는 집합에서 요소 압축 풀기:

tuple1 = (1, 2, 3)
set1 = {4, 5, 6}
merged_list = [*tuple1, *set1]
print(merged_list)  # Output: [1, 2, 3, 4, 5, 6]


패킹 해제를 위해 별표(*) 연산자를 사용할 때 결과의 요소 순서는 원래 iterables의 순서에 따라 달라집니다.

Python의 별표(*) 연산자는 일부 다른 언어의 스프레드 연산자와 유사한 목적을 수행하지만 Python에서 효과적으로 사용하려면 구문과 동작의 차이점을 이해하는 것이 중요합니다.

반응형
반응형

목록

  1. 목록 선언 및 요소 액세스
  2. index를 사용하여 요소에 접근하기
  3. list를 사용해 요소 수정하기
  4. 리스트 내에 특정값 유무 확인

Python에서 list는 여러 값을 저장할 수 있는 순서가 지정된 모음입니다. 목록은 대괄호([])를 사용하여 생성되며 각 요소는 쉼표(,)로 구분됩니다. 목록은 다양한 데이터 유형을 저장할 수 있으며 중첩 목록도 지원할 수 있습니다. 이 때 요소란 대괄호 안에 있는 자료를 뜻합니다. 예를 들면 다음과 같습니다.

 

[요소,요소,요소...]


목록 선언 및 요소 액세스

 

1. 목록 만들기

 

my_list = [1, 2, 3, 4, 5]


2. 목록의 요소에 액세스


목록의 요소에 액세스하려면 인덱싱을 사용할 수 있습니다. Python에서 인덱싱은 0부터 시작합니다. 따라서 첫 번째 요소에 액세스하려면 my_list[0]을 사용합니다. 두 번째 요소에는 my_list[1] 등을 사용합니다.

 

first_element = my_list[0]
second_element = my_list[1]


3. 네거티브 인덱싱


또한 음수 인덱싱을 사용하여 목록의 끝에서 요소에 액세스할 수 있습니다. 예를 들어 my_list[-1]은 마지막 요소를 제공하고 my_list[-2]는 마지막에서 두 번째 요소를 제공합니다.

 

last_element = my_list[-1]
second_to_last_element = my_list[-2]


4. 슬라이싱


슬라이싱을 사용하여 목록의 요소 범위에 액세스할 수 있습니다. 목록을 조각화하려면 시작 및 끝 인덱스를 콜론(:)으로 구분하여 지정해야 합니다.

 

# 인덱스 1부터 3까지의 요소를 가져옵니다 (끝 인덱스는 제외됨).
sub_list = my_list[1:4]


5. 중첩 목록 액세스


중첩 목록이 있는 경우 여러 대괄호를 사용하여 해당 요소에 액세스할 수 있습니다.

 

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
first_row = nested_list[0]
second_element_in_first_row = nested_list[0][1]


index를 사용하여 요소에 접근하기

파이썬에서 리스트의 요소들은 인덱스를 사용하여 접근할 수 있습니다. 리스트 인덱스는 0부터 시작하며 첫 번째 요소는 인덱스 0, 두 번째 요소는 인덱스 1, 이런 식으로 이어집니다. 음수 인덱스를 사용하여 리스트의 끝에서부터 요소에 접근할 수도 있습니다.

리스트에서 요소에 접근하는 방법은 다음과 같습니다.

1. 단일 요소에 접근하기

 

my_list = [10, 20, 30, 40]
first_element = my_list[0]  # 10
last_element = my_list[-1]  # 40


2. 요소 범위에 접근하기 (슬라이싱)

 

my_list = [10, 20, 30, 40, 50]
first_three_elements = my_list[0:3]  # [10, 20, 30]
last_two_elements = my_list[-2:]    # [40, 50]


3. 요소 간격을 지정하여 접근하기 (간격을 가진 슬라이싱)

 

my_list = [10, 20, 30, 40, 50]
even_indices_elements = my_list[0::2]  # [10, 30, 50]

 

4. 반복문을 사용하여 요소에 접근하기

 

my_list = [10, 20, 30, 40]

# 1. for 문 사용
for item in my_list:
    print(item)

# 2. enumerate() 함수와 for 문을 사용하여 인덱스와 요소에 접근하기
for index, item in enumerate(my_list):
    print(f"Element at index {index} is {item}")

# 3. while 문을 사용하여 요소에 접근하기
index = 0
while index < len(my_list):
    print(my_list[index])
    index += 1


list를 사용해 요소 수정하기

파이썬에서는 리스트에 요소를 추가하고 삭제하거나 정렬하는 등의 다양한 작업을 수행할 수 있는 리스트 메소드를 사용할 수 있습니다. 다음은 예시입니다.

1. 요소 추가하기

# 1. append(): 리스트의 끝에 요소를 추가합니다.

  my_list = [10, 20, 30]
  my_list.append(40)
  print(my_list)  # 출력: [10, 20, 30, 40]

# 2. insert(): 리스트의 특정 인덱스에 요소를 삽입합니다.

  my_list = [10, 20, 30]
  my_list.insert(1, 15)
  print(my_list)  # 출력: [10, 15, 20, 30, 40]

# 3. extend(): 다른 이터러블(예: 다른 리스트)에서 요소를 가져와 리스트 끝에 추가합니다.

  my_list = [10, 20, 30]
  another_list = [40, 50]
  my_list.extend(another_list)
  print(my_list)  # 출력: [10, 15, 20, 30, 40, 45, 50]


2. 요소 삭제하기

# 1. remove(): 리스트에서 지정된 요소의 첫 번째 발생을 제거합니다.

  my_list = [10, 20, 30, 20]
  my_list.remove(20)
  print(my_list)  # 출력: [10, 30, 20]

# 2. pop(): 지정된 인덱스에 있는 요소를 제거하거나 인덱스가 제공되지 않으면 마지막 요소를 제거합니다.

  my_list = [10, 20, 30, 40]
  my_list.pop()       # 마지막 요소 제거
  my_list.pop(1)      # 인덱스 1에 있는 요소 제거
  print(my_list)  # 출력: [10, 30]

# 3. clear(): 리스트에서 모든 요소를 제거합니다.

  my_list = [10, 20, 30]
  my_list.clear()
  print(my_list)  # 출력: []

 

2-1. DEL 키워드

파이썬에서 `del` 키워드는 리스트에서 항목을 제거하거나 전체 리스트를 삭제하는 데 사용됩니다. 이는 리스트 메소드가 아닌 일반적인 키워드이며 다른 데이터 구조에서도 사용할 수 있습니다. 리스트에서 `del` 키워드를 사용하는 방법은 다음과 같습니다.

 

# 1. 단일 항목 제거
# 특정 인덱스의 항목을 제거하려면 `del` 키워드 뒤에 리스트와 제거하려는 요소의 인덱스를 지정합니다.

my_list = [10, 20, 30, 40]
del my_list[1]  # 인덱스 1(20)의 요소를 제거합니다.
print(my_list)  # 출력: [10, 30, 40]

# 2. 항목 범위 제거
# 슬라이스를 지정하여 항목 범위를 제거할 수 있습니다.

my_list = [10, 20, 30, 40, 50, 60]
del my_list[1:4]  # 인덱스 1(포함)에서 4(제외)까지의 요소를 제거합니다.
print(my_list)  # 출력: [10, 50, 60]


# 3. 모든 항목 제거
# 콜론을 사용하여 전체 리스트를 지정하면 모든 항목을 제거할 수 있습니다. (이는 `clear()` 메소드와 다릅니다. `clear()` 메소드는 리스트를 유지하고 비웁니다.)

my_list = [10, 20, 30, 40]
del my_list[:]
print(my_list)  # 출력: []

# 4. 전체 리스트 삭제
# `del` 키워드를 사용하여 전체 리스트 객체를 삭제할 수 있습니다. 이렇게 하면 리스트 객체가 더 이상 존재하지 않으며 액세스하려고하면 오류가 발생합니다.

my_list = [10, 20, 30, 40]
del my_list
print(my_list)  # 이는 NameError를 발생시킵니다: name 'my_list' is not defined

`del` 키워드를 사용하면 리스트에서 항목이 제거되어 리스트의 크기가 변경됩니다. 이로 인해 실수로 인덱스 오류가 발생할 수 있으므로 주의해야 합니다.


3. 요소 정렬하기

 

# 1. sort()
# 리스트의 요소를 오름차순으로(기본값) 정렬하거나 `reverse=True`를 지정하면 내림차순으로 정렬합니다.

  my_list = [30, 10, 40, 20]
  my_list.sort()  # 요소를 오름차순으로 정렬합니다.
  print(my_list)  # 출력: [10, 20, 30, 40]

  my_list.sort(reverse=True)  # 요소를 내림차순으로 정렬합니다.
  print(my_list)  # 출력: [40, 30, 20, 10]

# 2. reverse()
# 메소드는 리스트에 있는 요소들의 순서를 뒤집습니다. `reverse()` 메소드를 사용하여 리스트의 순서를 뒤집는 예시 코드입니다.

my_list = [10, 20, 30, 40]
my_list.reverse()
print(my_list)  # 출력: [40, 30, 20, 10]


위 코드는 리스트 `my_list`에 있는 요소들의 순서를 뒤집고, 뒤집어진 리스트를 출력합니다. 따라서 출력 결과는 `[40, 30, 20, 10]`가 됩니다.


리스트 내에 특정값 유무 확인

파이썬에서 `in`과 `not in` 연산자는 리스트에 특정 값을 포함하는지 여부를 확인하는 데 사용됩니다. 이러한 연산자는 값을 찾으면 `True`를 반환하고 그렇지 않으면 `False`를 반환합니다.

다음은 `in`과 `not in` 연산자를 리스트와 함께 사용하는 방법입니다.

1. `in` 연산자 사용하기:

`in` 연산자는 주어진 값이 리스트에 있는지 여부를 확인합니다. 값이 발견되면 `True`를 반환하고 그렇지 않으면 `False`를 반환합니다.

my_list = [1, 2, 3, 4, 5]

# 리스트에 값이 있는지 확인
if 3 in my_list:
    print("3 is in the list")  # Output: 3 is in the list

if 6 in my_list:
    print("6 is in the list")
else:
    print("6 is not in the list")  # Output: 6 is not in the list

 

2. `not in` 연산자 사용하기:

`not in` 연산자는 주어진 값이 리스트에 없는지 여부를 확인합니다. 값이 발견되지 않으면 `True`를 반환하고 그렇지 않으면 `False`를 반환합니다.

my_list = [1, 2, 3, 4, 5]

# 리스트에 값이 없는지 확인
if 3 not in my_list:
    print("3 is not in the list")
else:
    print("3 is in the list")  # Output: 3 is in the list

if 6 not in my_list:
    print("6 is not in the list")  # Output: 6 is not in the list
else:
    print("6 is in the list")


`in`과 `not in` 연산자는 전체 리스트를 순환하지 않아도 특정 값의 존재 여부를 쉽게 확인할 수 있어 리스트와 다른 이터러블 데이터 구조를 다룰 때 매우 유용합니다.

반응형
반응형

이전 포스팅에서 if문에 대해서 다뤘는데, 실수로 이 부분을 깜빡해 따로 작성하게 되었습니다. if 문은 조건이 논리적으로 True일 때 실행되는 코드 블록을 정의합니다. 일부 값은 논리적으로 False로 평가되므로 if 문이 실행되지 않습니다. Python에서 False로 평가되는 값은 다음과 같습니다:

1. `None`: Python에서는 None이 정의되지 않은 값을 나타내며, 논리적으로 False입니다.
2. 숫자 0: 정수 0과 실수 0.0은 논리적으로 False입니다.
3. 빈 문자열 `''`: 문자열이 비어 있으면 논리적으로 False입니다.
4. 빈 리스트 `[]`: 리스트가 비어 있으면 논리적으로 False입니다.
5. 빈 튜플 `()`: 튜플이 비어 있으면 논리적으로 False입니다.
6. 빈 딕셔너리 `{}`: 딕셔너리가 비어 있으면 논리적으로 False입니다.
7. 빈 집합 `set()`: 집합이 비어 있으면 논리적으로 False입니다.

이러한 값들은 if 문의 조건으로 사용될 때 코드 블록을 실행하지 않습니다. 예를 들어:

value = 0

if value:
    print("The value is logically True.")
else:
    print("The value is logically False.")



이 경우 출력은 "The value is logically False."입니다. 비슷한 방식으로, 빈 컨테이너나 None 값도 if 문에서 논리적으로 False로 취급됩니다. 이를 이용해 특정 값을 확인하거나, 컨테이너가 비어 있는지 여부를 확인하는 등의 작업을 수행할 수 있습니다. 또한 개발 중에 아직 구현되지 않은 기능을 실행해 오류를 발생하지 않도록 이렇게 처리하기도 합니다.

 

이번 포스팅은 이전 포스팅을 가볍게 보충하는 느낌이기 때문에 여기서 마치도록 하겠습니다.

반응형
반응형

목록

  1. if 함수
  2. 시간 표현
  3. 홀짝 구분

if 함수

`if` 문은 Python에서 조건부 실행을 수행하기 위해 사용되는 기본 제어 구조입니다. `if` 문은 주어진 조건이 참(`True`)인 경우에만 해당 블록의 코드를 실행합니다.

1. 기본 예시

age = 18

if age >= 18:
    print("You are an adult.")

이 예시에서 `age >= 18`이라는 조건이 참(`True`)이므로, `print("You are an adult.")` 구문이 실행됩니다.

2. 여러 조건 사용

`if` 문은 `elif`(else if의 줄임말)와 `else` 절과 함께 사용되어 다양한 경우를 처리할 수 있습니다.

temperature = 25

if temperature < 0:
    print("It's freezing!")
elif temperature >= 0 and temperature < 10:
    print("It's cold.")
elif temperature >= 10 and temperature < 20:
    print("It's cool.")
else:
    print("It's warm.")


이 예시에서는 온도에 따라 다양한 메시지를 출력합니다. 온도가 0도 미만이면 "It's freezing!"이 출력되고, 0도 이상 10도 미만이면 "It's cold."이 출력됩니다. 10도 이상 20도 미만일 경우 "It's cool."이 출력되며, 20도 이상일 경우 "It's warm."이 출력됩니다.


이처럼 `if`, `elif`, `else` 구문을 사용하여 다양한 조건에 따라 코드를 실행할 수 있습니다.


시간 표현

Python의 `datetime` 모듈을 사용하여 날짜와 시간을 처리하고, `if`문을 사용하여 특정 조건에 따라 다른 메시지를 출력하는 예제를 제공하겠습니다.

from datetime import datetime

# 현재 날짜와 시간 가져오기
current_time = datetime.now()

# 현재 시간 가져오기
current_hour = current_time.hour

if 6 <= current_hour < 12:
    print("Good morning!")
elif 12 <= current_hour < 18:
    print("Good afternoon!")
elif 18 <= current_hour < 22:
    print("Good evening!")
else:
    print("Good night!")


이 예제에서는 `datetime.now()` 함수를 사용하여 현재 날짜와 시간을 가져옵니다. 그런 다음 `current_time.hour` 속성을 사용하여 현재 시간(시)을 가져옵니다. `if`와 `elif`문을 사용하여 현재 시간에 따라 다른 인사말을 출력합니다.

 

파이썬의 if 문을 사용하여 입력된 월을 기반으로 계절을 구분하는 예제입니다:

month = int(input("Enter the month (1-12): "))

if 1 <= month <= 12:
    if 3 <= month < 6:
        season = "Spring"
    elif 6 <= month < 9:
        season = "Summer"
    elif 9 <= month < 12:
        season = "Autumn"
    else:
        season = "Winter"
    print(f"The season is {season}.")
else:
    print("Invalid month. Please enter a number between 1 and 12.")


이 코드는 사용자로부터 월을 입력받아 해당 월이 속한 계절을 출력합니다. 입력된 월의 범위가 올바르지 않으면 오류 메시지를 출력합니다.


홀짝 구분

Python을 사용하여 주어진 숫자가 짝수인지 홀수인지를 확인하는 코드를 작성해보겠습니다.

number = int(input("Enter a number: "))

if number % 2 == 0:
    print("The number is even.")
else:
    print("The number is odd.")



이 코드는 사용자로부터 입력받은 숫자를 확인하여, 해당 숫자를 2로 나눈 나머지가 0이면 짝수로 판단하고, 그렇지 않으면 홀수로 판단합니다. 이를 통해 주어진 숫자가 짝수인지 홀수인지를 출력합니다.

 

다른 방법으로는 비트 연산을 사용하는 방법이 있습니다. 예를 들어, 다음 코드를 사용할 수 있습니다.

number = int(input("Enter a number: "))

if number & 1 == 0:
    print("The number is even.")
else:
    print("The number is odd.")



이 코드는 사용자로부터 입력받은 숫자의 마지막 비트를 확인합니다. 이진수로 표현했을 때 마지막 비트가 0이면 짝수이고, 1이면 홀수입니다. 이 코드는 비트 연산을 사용하여 주어진 숫자가 짝수인지 홀수인지를 출력합니다.

반응형