상세 컨텐츠

본문 제목

Python(파이썬) 구문 (문법)

프로그램 언어/Python

by husks 2023. 3. 29. 13:49

본문

반응형

리스트 컴프리헨션(list comprehension)은 파이썬에서 제공하는 간결하고 효율적인 방식으로 리스트를 생성하는 구문입니다.

 

기본적인 아이디어는 한 줄의 코드로 간단한 연산이나 필터링을 적용한 리스트를 만드는 것입니다.

 

리스트 컴프리헨션은 대괄호([]) 안에 for 반복문과 선택적으로 if 조건문을 포함하여 작성됩니다.

 

리스트 컴프리헨션의 기본 구조는 다음과 같습니다.

 

[expression for item in iterable if condition]

1. expression: item에 대해 계산할 표현식입니다. 이 표현식의 결과가 최종 리스트에 포함됩니다.

 

2. for item in iterable: iterable은 반복 가능한 객체(리스트, 튜플, 집합, 사전, 문자열 등)입니다. item은 iterable의 각 요소를 의미합니다.

 

3. if condition: 선택적으로 사용되는 조건문입니다. 이 조건이 True일 때만 expression의 결과가 리스트에 포함됩니다.

# 0부터 9까지의 숫자 중 짝수만 포함하는 리스트 생성
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # 출력: [0, 2, 4, 6, 8]

# 0부터 9까지의 숫자를 제곱한 값을 포함하는 리스트 생성
squares = [x**2 for x in range(10)]
print(squares)  # 출력: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

리스트 컴프리헨션은 코드를 간결하게 작성할 수 있고, 일반적으로 for 루프와 append() 메서드를 사용하는 것보다 실행 속도가 빠릅니다.

 

하지만 너무 복잡한 표현식이나 중첩된 반복문을 사용하면 가독성이 떨어질 수 있으므로 적절한 수준에서 사용하는 것이 좋습니다.


딕셔너리 컴프리헨션(Dictionary Comprehension)은 파이썬에서 딕셔너리를 생성하는 간결하고 효율적인 방법입니다.

 

딕셔너리 컴프리헨션은 중괄호({}) 안에 for 반복문과 선택적으로 if 조건문을 포함하여 작성됩니다.

딕셔너리 컴프리헨션의 기본 구조는 다음과 같습니다.

{key_expression: value_expression for item in iterable if condition}

1. key_expression: item에 대해 계산할 키 표현식입니다.


2. value_expression: item에 대해 계산할 값 표현식입니다.


3. for item in iterable: iterable은 반복 가능한 객체(리스트, 튜플, 집합, 사전, 문자열 등)입니다. item은 iterable의 각 요소를 의미합니다.


4. if condition: 선택적으로 사용되는 조건문입니다. 이 조건이 True일 때만 key_expression과 value_expression의 결과가 딕셔너리에 포함됩니다.

# 0부터 4까지의 숫자와 그 제곱을 키-값 쌍으로 가지는 딕셔너리 생성
squares = {x: x**2 for x in range(5)}
print(squares)  # 출력: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

# 문자열 리스트를 키로 하고 각 문자열의 길이를 값으로 가지는 딕셔너리 생성
words = ["apple", "banana", "orange"]
word_lengths = {word: len(word) for word in words}
print(word_lengths)  # 출력: {'apple': 5, 'banana': 6, 'orange': 6}

딕셔너리 컴프리헨션은 코드를 간결하게 작성할 수 있고, 일반적으로 for 루프와 dict() 함수를 사용하는 것보다 실행 속도가 빠릅니다.

 

하지만 너무 복잡한 표현식이나 중첩된 반복문을 사용하면 가독성이 떨어질 수 있으므로 적절한 수준에서 사용하는 것이 좋습니다.


집합 컴프리헨션(Set Comprehension)은 파이썬에서 집합을 생성하는 간결하고 효율적인 방법입니다. 집합 컴프리헨션은 중괄호({}) 안에 for 반복문과 선택적으로 if 조건문을 포함하여 작성됩니다.

집합 컴프리헨션의 기본 구조는 다음과 같습니다.

{expression for item in iterable if condition}

1. expression: item에 대해 계산할 표현식입니다. 이 표현식의 결과가 최종 집합에 포함됩니다.


2. for item in iterable: iterable은 반복 가능한 객체(리스트, 튜플, 집합, 사전, 문자열 등)입니다. item은 iterable의 각 요소를 의미합니다.


3. if condition: 선택적으로 사용되는 조건문입니다. 이 조건이 True일 때만 expression의 결과가 집합에 포함됩니다.

# 0부터 9까지의 숫자 중 짝수만 포함하는 집합 생성
even_numbers = {x for x in range(10) if x % 2 == 0}
print(even_numbers)  # 출력: {0, 2, 4, 6, 8}

# 문자열의 고유한 문자를 포함하는 집합 생성
unique_chars = {char for char in "hello world"}
print(unique_chars)  # 출력: {'h', 'e', 'l', 'o', ' ', 'w', 'r', 'd'}

집합 컴프리헨션은 코드를 간결하게 작성할 수 있고, 일반적으로 for 루프와 set() 함수를 사용하는 것보다 실행 속도가 빠릅니다.

 

하지만 너무 복잡한 표현식이나 중첩된 반복문을 사용하면 가독성이 떨어질 수 있으므로 적절한 수준에서 사용하는 것이 좋습니다.


제너레이터 표현식(Generator Expression)은 파이썬에서 제너레이터 객체를 생성하는 간결한 방법입니다.

 

제너레이터 표현식은 소괄호(()) 안에 for 반복문과 선택적으로 if 조건문을 포함하여 작성됩니다.

제너레이터 표현식의 기본 구조는 다음과 같습니다.

(expression for item in iterable if condition)

1. expression: item에 대해 계산할 표현식입니다. 이 표현식의 결과는 제너레이터 객체를 순회할 때 생성됩니다.

 

2. for item in iterable: iterable은 반복 가능한 객체(리스트, 튜플, 집합, 사전, 문자열 등)입니다. item은 iterable의 각 요소를 의미합니다.


3. if condition: 선택적으로 사용되는 조건문입니다. 이 조건이 True일 때만 expression의 결과가 제너레이터 객체를 순회하는 동안 생성됩니다.

# 0부터 9까지의 숫자 중 짝수만 생성하는 제너레이터 표현식
even_numbers = (x for x in range(10) if x % 2 == 0)

# 제너레이터 객체를 순회하며 출력
for num in even_numbers:
    print(num)
# 출력:
# 0
# 2
# 4
# 6
# 8

제너레이터 표현식의 핵심 장점은 메모리 효율성입니다.

 

리스트 컴프리헨션과 달리 제너레이터 표현식은 전체 결과를 한 번에 메모리에 할당하지 않고, 순회하는 동안 하나씩 생성합니다.

 

따라서 대량의 데이터를 처리할 때 메모리 사용량을 줄이고 성능을 향상시킬 수 있습니다.

단, 제너레이터 객체는 일회성이므로 한 번 순회한 후에는 다시 사용할 수 없습니다.

 

필요에 따라 제너레이터 표현식을 다시 정의하여 사용해야 합니다.


람다 함수(Lambda Function)는 파이썬에서 익명 함수(Anonymous Function)를 생성하는 방법입니다.

 

람다 함수는 간단한 함수를 한 줄로 표현할 수 있어 코드를 간결하게 작성할 수 있습니다.

람다 함수의 기본 구조는 다음과 같습니다.

lambda arguments: expression

1. lambda: 람다 함수를 정의하는 키워드입니다.


2. arguments: 함수의 입력 인자로, 콤마(,)로 구분된 변수 목록입니다.


3. expression: 인자를 사용하여 계산할 표현식입니다. 이 표현식의 결과가 함수의 반환 값이 됩니다.

# 두 수를 더하는 람다 함수
add = lambda x, y: x + y
result = add(3, 4)  # 결과: 7

# 제곱을 계산하는 람다 함수
square = lambda x: x**2
result = square(5)  # 결과: 25

# 리스트의 원소를 제곱하여 새로운 리스트 생성
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers))
# 결과: [1, 4, 9, 16, 25]

람다 함수는 주로 일회성으로 사용되는 간단한 함수를 작성할 때 유용하며, map(), filter(), reduce()와 같은 고차 함수의 인자로 전달되기도 합니다.

하지만 람다 함수는 표현식을 한 줄로 제한하기 때문에 복잡한 로직을 구현하기 어렵습니다.

 

여러 줄의 코드나 복잡한 처리가 필요한 경우 일반 함수를 사용하는 것이 더 적합합니다.


슬라이싱(Slicing)은 파이썬에서 리스트, 튜플, 문자열과 같은 시퀀스(sequence) 데이터 타입의 일부분을 선택하여 새로운 시퀀스를 생성하는 방법입니다.

 

슬라이싱은 대괄호([]) 안에 콜론(:)을 사용한 표현식으로 작성됩니다.

슬라이싱의 기본 구조는 다음과 같습니다.

sequence[start:stop:step]

1. start: 슬라이싱을 시작할 인덱스입니다. 이 인덱스를 포함합니다. 생략하면 기본값은 0입니다.


2. stop: 슬라이싱을 종료할 인덱스입니다. 이 인덱스는 포함되지 않습니다. 생략하면 기본값은 시퀀스의 길이입니다.


3. step: 슬라이싱에서 선택할 요소의 간격입니다. 생략하면 기본값은 1입니다.

# 리스트 슬라이싱
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sliced_numbers = numbers[1:6]  # 결과: [1, 2, 3, 4, 5]

# 문자열 슬라이싱
text = "Hello, World!"
sliced_text = text[:5]  # 결과: "Hello"

# 슬라이싱에서 step 사용
even_numbers = numbers[0::2]  # 결과: [0, 2, 4, 6, 8]

슬라이싱을 사용하면 시퀀스의 일부분을 쉽게 선택하고 조작할 수 있습니다.

 

음수 인덱스를 사용하여 뒤쪽부터 슬라이싱할 수도 있습니다.

 

예를 들어, sequence[:-1]은 마지막 요소를 제외한 모든 요소를 선택합니다.


월러스 연산자(Walrus Operator)는 파이썬 3.8 버전부터 도입된 새로운 할당 연산자입니다.

 

월러스 연산자는 := 기호로 표현되며, 표현식 내에서 값을 계산하고 변수에 할당하는 동시에 사용할 수 있습니다.

월러스 연산자의 주요 사용 사례는 반복문에서 조건과 할당을 함께 처리할 때입니다.

 

예를 들어, 파일의 내용을 줄 단위로 읽어 처리하는 경우, 월러스 연산자를 사용하여 코드를 간결하게 작성할 수 있습니다.

# 월러스 연산자를 사용하지 않은 경우
with open("file.txt") as file:
    line = file.readline()
    while line:
        print(line.strip())
        line = file.readline()

# 월러스 연산자를 사용한 경우
with open("file.txt") as file:
    while (line := file.readline()):
        print(line.strip())

월러스 연산자를 사용하면 코드를 간결하게 작성할 수 있지만, 가독성을 해칠 수도 있으므로 적절한 상황에 사용하는 것이 좋습니다.

반응형

관련글 더보기

댓글 영역