[python] 컴프리헨션

728x90

컴프리헨션은 파이썬만의 특수한 문법입니다. 컴프리헨션을 사용하면 리스트, 세트, 딕셔너리 등의 컬렉션 데이터 타입을 간결하게 생성하거나 변환할 수 있습니다. 컴프리헨션을 사용하면 작성하는 코드의 양을 줄일 수 있습니다.

1. 리스트 컴프리헨션

리스트 컴프리헨션을 사용하면 for문을 좀 더 간결하게 표현할 수 있습니다.

 

또한 일반 for문보다 미세하게 빠르다고 합니다.

 

일반적으로 아래와 같이 사용합니다.

[변환할 값 for 변수 in 리스트 if 조건문]

 

만약에 if else가 포함된다면 아래와 같이 사용합니다.

[변환할 값 if 조건문 else 조건이 성립하지않을때 변환할 값 for 변수 in 리스트]

 

아래는 예제입니다.

students = [1,2,3,4,5]
print(students) #출력 [1,2,3,4,5]

students = [i+100 for i in students]
print(students) #출력 [101,102,103,104,105]

students = ["codezero","jisu","mi na"]
print(students) #출력:['codezero','jisu','mi na']

students = [i.upper() for i in students]
print(students) #출력:['CODEZERO','JISU','MI NA']

students = [len(i) for i in students]
print(students) #출력:[8,4,5]

numbers = [5,10,20,30,50,80,100,200,150,300]

print([f"{i}=100 over" for i in numbers if i>100]) #출력:['200=100 over', '150=100 over', '300=100 over']
print([f"{i}=2자리" for i in numbers if i<100 if i>9]) #출력: ['10=2자리', '20=2자리', '30=2자리', '50=2자리', '80=2자리']
print([i+100 if i>=100 else i*10 for i in numbers]) #출력: [50, 100, 200, 300, 500, 800, 200, 300, 250, 400]

 

2. 세트 컴프리헨션 & 딕셔너리 컴프리헨션

세트 컴프리헨션과 딕셔너리 컴프리헨션을 사용하는 방법은 유사합니다. 딕셔너리 컴프리헨션을 사용할때는 key와 value형식으로 만들어야됩니다.

 

즉 사용방법은 아래와 같습니다.

 

1] 세트 컴프리헨션

{변환할 값 for 변수 in 반복가능한객체 if 조건문}

 

예제)

set_comprehension = {x**2 for x in [1,2,3,4,5,6]} 
print(type(set_comprehension),set_comprehension) #출력: <class 'set'> {1, 4, 36, 9, 16, 25}

 

2] 딕셔너리 컴프리헨션

{key : 변환할 값 for 변수 in 반복가능한 객체 if 조건문}

 

예제)

dict_comprehension = {x-1 : x**2 for x in [1,2,3,4,5,6]}
print(type(dict_comprehension),dict_comprehension) #출력: <class 'dict'> {0: 1, 1: 4, 2: 9, 3: 16, 4: 25, 5: 36}


tuple_a = (('k1','val1'),
           ('k2','val2'),
           ('k3','val3'))

dict_comprehension2 = {k:v for k,v in tuple_a}
print(dict_comprehension2) #출력: {'k1': 'val1', 'k2': 'val2', 'k3': 'val3'}

 

'PYTHON Programming > Python' 카테고리의 다른 글

[python] 입출력  (0) 2024.04.23
[python] 함수  (0) 2024.04.23
[python] 반복문  (0) 2024.04.23
[python] 제어문  (0) 2024.04.22
[python] 변수 및 연산자  (0) 2024.04.22