Tech & Development/Programming Languages

[Python] 코드를 한 줄로 줄이는 방법: 내포 표현식과 One-liners

Theo (테오) 2024. 11. 11. 22:37
반응형

1. 리스트 내포 (List Comprehension)

리스트 내포는 조건에 따라 요소를 필터링하거나 변환하여 새로운 리스트를 만들 수 있습니다. 예를 들어, 0부터 9까지의 숫자 중 짝수만 제곱한 리스트를 생성하려면 다음과 같이 작성할 수 있습니다.

squares = [x**2 for x in range(10) if x % 2 == 0]
print(squares)  # [0, 4, 16, 36, 64]

2. 딕셔너리 내포 (Dictionary Comprehension)

딕셔너리 내포를 사용하면 키-값 쌍을 조건에 맞게 필터링하여 새로운 딕셔너리를 생성할 수 있습니다. 예를 들어, 0부터 4까지의 숫자와 그 제곱을 키-값으로 하는 딕셔너리는 다음과 같이 만들 수 있습니다.

squares_dict = {x: x**2 for x in range(5)}
print(squares_dict)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

3. 조건부 표현식 (Conditional Expression)

조건부 표현식을 사용하면 삼항 연산자를 통해 한 줄로 조건문을 처리할 수 있습니다. 예를 들어, 변수 x가 짝수인지 홀수인지 확인하려면 다음과 같이 작성할 수 있습니다.

x = 5
is_even = "Even" if x % 2 == 0 else "Odd"
print(is_even)  # "Odd"

4. 파일 읽기 - 리스트 내포 사용

리스트 내포를 사용하여 파일의 각 줄을 한 줄로 읽어들일 수 있습니다. 예를 들어, file.txt 파일의 모든 줄을 읽어 리스트에 저장하려면 다음과 같이 작성합니다.

lines = [line.strip() for line in open("file.txt")]
print(lines)  # 파일의 각 줄이 리스트의 요소로 저장됩니다.

5. map()filter()를 사용한 한 줄 표현

map()filter()를 이용하면 반복적인 작업을 한 줄로 처리할 수 있습니다. 예를 들어, 리스트의 모든 요소를 제곱하거나, 짝수만 선택할 때 다음과 같이 작성할 수 있습니다.

squares = list(map(lambda x: x**2, range(10)))
print(squares)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

evens = list(filter(lambda x: x % 2 == 0, range(10)))
print(evens)  # [0, 2, 4, 6, 8]

이처럼 Python의 한 줄 표현식은 간결하고 효율적으로 코드를 작성할 수 있게 해줍니다.

반응형