파이썬 기초: 리스트와 집합의 주요 기능 활용

YeHee·2024년 12월 16일

⏰ 2024.12.13 (D+47)

1. 리스트 다루기

  • 파이썬에서 리스트는 가장 기본적인 자료형 중 하나로, 여러 개의 값을 저장할 수 있는 컨테이너
  • 리스트는 요소의 순서가 중요하며, 중복을 허용하고, 각 요소를 인덱스를 통해 접근 가능

1.1. 리스트의 기본 함수

  • 리스트에 대한 기본적인 내장 함수를 활용하여 리스트의 최소값, 최대값, 총합 등을 구하기
    (⭐ 내장 함수 : min( ), max( ), sum( ) )
    예) max(list)로 리스트에서 최대값을 구하거나, sum(list)로 총합을 계산 가능

1.2. 리스트 표현식

  • 리스트 표현식은 간결한 문법으로 새로운 리스트를 생성하는 방법
  • 예) [i * i for i in range(1, 6)]은 1부터 5까지의 숫자의 제곱을 담은 리스트를 생성

1.3. map 함수 활용

  • map() 함수는 주어진 함수를 리스트의 모든 요소에 적용하여 결과를 반환
  • 예) map(str, [1, 2])는 숫자 리스트를 문자열로 변환
  • 리스트의 각 요소에 동일한 작업을 효율적으로 적용할 때 유용

1.4. 이터레이터 사용

  • for문을 활용해 리스트의 요소를 순차적으로 처리 가능
  • 중첩된 리스트나 비슷한 복잡한 구조도 처리 가능

2. 집합 다루기

  • 집합(set)은 파이썬에서 중요한 자료형 중 하나로, 순서가 없고 중복을 허용하지 않는 데이터 구조
  • 집합은 특히 특정 항목이 포함되었는지 확인할 때 유용하며, 여러 수학적 연산도 지원

2.1. 집합 생성

  • 집합을 생성할 때는 {} 또는 set() 함수를 사용
  • 예) set_ = {1, 2, 3}은 간단히 집합을 생성하는 방법
  • 중요한 점은 리스트나 딕셔너리 같은 mutable 객체는 집합의 요소로 사용할 수 없다는 점

2.2. 집합 메소드

  • 집합에서는 여러 유용한 메소드를 제공

- 합집합 (Union): 두 집합의 모든 요소를 포함하는 집합을 생성

set1 | set2
set1.union(set2)

- 교집합 (Intersection): 두 집합에 모두 포함된 요소만 남긴다.

set1 & set2
set1.intersection(set2)

- 차집합 (Difference): 한 집합에만 있는 요소를 남긴다

set1 - set2
set1.difference(set2)

- 대칭 차집합 (Symmetric Difference): 두 집합에서 공통된 요소를 제외한 요소들을 남긴다

set1 ^ set2
set1.symmetric_difference(set2)

2.3. 집합의 요소 추가 및 삭제

  • 집합에서는 요소를 추가하거나 삭제 가능
  • add( ) 메소드를 사용하여 새로운 요소를 추가하고, remove( )와 discard( )로 요소를 삭제
  • remove( )는 요소가 없으면 KeyError를 발생
  • discard( )는 오류 없이 요소를 제거

3. 집합 표현식

  • 집합 표현식(set comprehension)은 리스트 표현식처럼 조건을 추가하여 집합을 쉽게 생성할 수 있는 방법
  • 예) set_ = {i for i in 'HELLO'}는 문자열 'HELLO'에서 중복을 제거한 집합을 생성

3.1. 집합 표현식 예시

- 문자열에서 집합 생성:

set_ = {i for i in 'HELLO'}
print(set_)

: 이 코드는 {'H', 'E', 'L', 'O'}와 같이 중복을 제거한 집합을 반환

- 조건부 집합 표현식: 집합을 생성할 때 조건을 추가

set_ = {i for i in range(1, 6) if i % 2 == 0}

예) 1부터 5까지의 숫자 중 짝수만 포함된 집합을 생성

3.2. map() 함수와 집합 표현식의 결합

  • map( ) 함수와 집합 표현식을 결합하여 데이터를 변환하면서 집합을 생성
  • 예) map(int, input().split())으로 입력받은 값을 정수로 변환하고 이를 집합으로 저장하는 방식

3.3. 학생 성적에서 조건에 맞는 학생 이름 찾기

  • 학생들의 성적을 딕셔너리로 저장한 후, 특정 조건을 만족하는 학생들의 이름을 집합으로 생성 가능
  • 예) 평균 성적이 90점 이상인 학생들의 이름을 추출하는 방법
names = {student.get('name') for student in students if sum(map(int, student.values())) / len(student) >= 90}

4. 결론

  • 파이썬에서 리스트와 집합은 매우 유용한 자료형
  • 리스트는 순서와 중복을 허용하는 반면, 집합은 중복을 제거하고 수학적 연산을 손쉽게 처리 가능
  • map() 함수와 집합 표현식을 적절히 활용하면, 데이터를 더욱 효율적으로 처리 가능

0개의 댓글