데이터 및 C언어/Python 공부 내용

[Python] 파이썬 리스트 표현식 {Python ListComprehension}

  • -
반응형

 

 

 

 

[Python] 파이썬 리스트 표현식 {Python ListComprehension}

 


 

         ∇ 리스트 표현식 [ List Comprehension ]

                   : 리스트 표현식은 리존의 리스트를 기반으로 새로운 리스트를 생성하는 간결하고 효율적인 방법입니다.

                      이는 for루프와 조건문을 한 줄로 결합하여 새로운 리스트를 만드는 파이썬의 특별한 방법입니다.

 

                      +List 또는 set, dictionary 안에서 for 문과 if문을 사용하여,'         

                       컬렉션내부의 원소들을 구성시킬 수 있습니다.

 

 

                   ≫ 주요 특징.

                         1. 간결성 : 여러 줄의 코드를 한 줄로 줄일 수 있습니다.

                         2. 가독성 : 적절히 사용하면 코드의 의도를 더 명확하게 표현할 수 있습니다.

                         3, 효율성 : 일반적인 for루프보다 더 빠르게 실행됩니다.

 

 

                   ≫ 기본 구조. 

                                - '표현식'은 새 리스트의 각 요소를 어떻게 만들지 정의합니다.

                                - 'for 항목 in 반복가능한_객체'는 어떤 데이터를 순회할지 지정합니다.

                            

 

                  ≫ 예시.

 

                             - 숫자의 제곱 리스트.

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)  # 출력: [1, 4, 9, 16, 25]

 x**2가 표현식이고, x가 항목, numbers가 반복가능객체입니다.

 

                    

                            - 문자열 리스트에서 길이가 3 이상인 단어만 선택하기.

words = ["cat", "dog", "elephant", "bird"]
long_words = [word for word in words if len(word) >= 3]
print(long_words)  # 출력: ['cat', 'dog', 'elephant', 'bird']

 

 

              ≫ 조건문 추가.

                     : 리스트 표현식에 조건문을 추가해줍니다.

ex)

짝수인 값을 뽑아서 제곱.


 

                ≫ 중첨 루프.

                     : 중첩 루프는 두 개 이상의 시퀀스를 순회할 때 사용합니다. [ 중첩 for문 과 비슷]

                           - 다차원 데이터를 처리하거나, 복잡한 연산을 수행할 때 매우 유용.

중첩 루프 리스트의 기본 형식
중첩 for문

python
matrix = [(i, j) for i in range(2) for j in range(3)]
print(matrix)
# 출력: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]

- 외부 루프는 i를 0부터 1까지 반복하고, 내부 루프는 j를 0부터 2까지 반복합니다.

 

-조건문도 추가를 해서 만들 수 있습니다.

python
even_pairs = [(i, j) for i in range(3) for j in range(3) if (i + j) % 2 == 0]
print(even_pairs)
# 출력: [(0, 0), (0, 2), (1, 1), (2, 0), (2, 2)]

 i와 j의 합이 짝수인 경우만 포함.

 


 

              ≫ 딕셔너리 컴프리헨션 : 딕셔너리를 생성하는 간결한 방법.

                                         - > 리스트 컴프리헨션과 유사한 구조를 가지고 있지만,

                                               키-값 쌍을 생성한다는 점이 다릅니다.

                    #딕셔너리 컴프리헨션의 장점.

                          1. 코드가 간결해집니다.

                          2. 가독성이 좋아집니다.

                          3. 일반적으로 for 루프보다 성능이 좋습니다.

 

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

 

++조건문 추가

even_squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(even_squares)  # 출력: {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

 

++기존 딕셔너리 변환.

old_dict = {'a': 1, 'b': 2, 'c': 3}
new_dict = {k: v*2 for k, v in old_dict.items()}
print(new_dict)  # 출력: {'a': 2, 'b': 4, 'c': 6}

 

     - 딕셔너리 컴프리헨션은 특히! [ 데이터 변환, 필터링, 수집 등]의 작업에서 유용하게 사용됩니다.

         - ex) 특정 조건을 만족하는 키-값 쌍만 선택하거나, 키와 값을 변경하여 새로운 딕셔너리를 만들 때 효과적입니다.

 

     - 다만,! 너무 로직이 복잡한 경우 일반 for루프를 사용하는 것 이 더 효과적.!

 


 

        ∇ 집합 컨프리헨션( Set Comprehension)

                : 집합 컨프리센션은 리스트 컨프리헨션과 유사한 구조를 가지고 있지만,

                    중복을 허용하지 않는 고유한 요소들의 집합을 생성하는데 사용됩니다.

 

 

               

기본 구조

                     √ 특징.

                          ≫ 중복 제거 : 집합은 고유한 요소만 포함되므로, 자동으로 중복을 제거합니다.


numbers = [1, 2, 2, 3, 3, 4, 5]
unique_numbers = {x for x in numbers}
print(unique_numbers)  # 출력: {1, 2, 3, 4, 5}

                          ≫ 순서 없음 : 집합은 순서가 없는 자료구조입니다.

 

 

                          ++ 조건문 추가. : 집합 컨프리헨션에도 조건문을 추가할 수 있습니다.


even_squares = {x**2 for x in range(10) if x % 2 == 0}
print(even_squares)  # 출력: {0, 4, 16, 36, 64}

 

                        ++ 데이터 변환 : 집합 컨프리센션을 사용하여 데이터를 변환하고 동시에 중복을 제거.

               

words = ['hello', 'world', 'python', 'programming']
unique_lengths = {len(word) for word in words}
print(unique_lengths)  # 출력: {5, 6, 11}

 

 

              √ 장점.

                    1. 코드의 간결성 : 복잡한 for 루프를 한 줄로 표현.

                    2. 가독성 : 익숙해지면 코드의 의도를 빠르게 파악.

                    3. 성능 : 일반적으로 for 루프보다 성능이 좋습니다.

 

                  ## 집합 컨프리헨션은 특히 중복제거와 데이터 필터링이 동시에 필요한 경우에 유용 ##

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.