상세 컨텐츠

본문 제목

파이썬 자료구조: 리스트 가지고 놀기.

본문

파이썬의 자료구조중 가장 기본이되고 많이 사용되는 리스트의 사용법에 대해 알아보겠습니다.

 

리스트의 정의와 기본적인 사용법은 아래 파이썬 공식문서를 참조하시는 것을 권장해 드립니다.

docs.python.org/ko/3/tutorial/introduction.html#lists

 

3. 파이썬의 간략한 소개 — Python 3.9.5 문서

3. 파이썬의 간략한 소개 다음에 나올 예에서, 입력과 출력은 프롬프트(>>> 와 …)의 존재 여부로 구분됩니다: 예제를 실행하기 위해서는 프롬프트가 나올 때 프롬프트 뒤에 오는 모든 것들을 입

docs.python.org

리스트 기본 사용법

1. 리스트 만들기

>>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']

2. 리스트 자료형 메소드들

 

3. 리스트 원소 가져오기

>>> fruits[1]
apple

 

4. 원소 카운트 하기

>>> fruits.count('apple')
2

 

5. 리스트 슬라이싱

  • [num:] num 이상(포함하고 부터)

  • [:num] num 미만(포함하지 않고 까지)

  • [num1:num2] num1이상 ~ num2미만

  • [::-1] 거꾸로

  • [1:10:2] 1이상 10미만중 2개씩만

 

6. 리스트 추가(append메소드)

7. 리스트 삭제(remove메소드)

8. 리스트 정렬

  • 완전 정렬 (sort메소드)

  • 임시 정렬 (sorted 메소드)

 

9. 리스트 역정렬

  • 리스트 원소들의 현재 순서를 역순으로 배열하기 때문에 sort와 달리 아래와 같이 실행전 순서를 기준으로 원소 배열을 뒤집습니다.

  • 만약 sort 메소드를 실행후 reverse를 실행하면 알파벳 역순으로 뒤집게 됩니다.

 

리스트 응용 활용법

(A) 리스트 원소를 문자열로 합치기 (join메소드 활용)

result1 = "-".join(fruits)
result2 = "".join(fruits)

 

(B) 두개의 리스트를 하나의 리스트로 합치기

fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
prices = [1000, 2000, 3000]

# + 연산자를 이용하여 합치기
r1 = fruits + prices

# 기존 리스트에 다른 리스트를 추가 확장하기
fruits.extend(prices)

 

(C) 리스트에서 중복제거하기

fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
dict_result = set(fruits)
list_result = list(dict_result)
print(list_result)

 

(D) 두개의 리스트 비교 하기(원소 차이점 찾기)

각각의 리스트를 set형식으로 변경하여 difference명령어 또는 -(뺄기)연산자로 비교하는 방법

List1 = [1,2,3,4,5,7]
List2 = [1,3,2,4]
SetList1 = set(List1)
SetList2 = set(List2)

print(f"List2-List1, 작은리스트에서 큰리스트를 뺀 결과: {SetList2 - SetList1}")
print(f"List1-List2, 큰리스트에서 작은리스트를 뺀 결과: {SetList1 - SetList2}")

print(f"작은리스트에서 큰리스트를 비교한 결과: {SetList2.difference(SetList1)}")
print(f"큰리스트에서 작은리스트를 비교한 결과: {SetList1.difference(SetList2)}")

 

(E) 리스트에서 다른 리스트 만들어내기

1) map 함수 

  • 정의 - 반복가능한 iterable객체를 받아서, 각 요소에 함수를 적용해주는 함수
  • 리스트의 각 원소들의 타입 변경하기
list_str = ['1','2','3','4']
list_int = list(map(int, list_str)) # 정수로 변환
list_str2 = list(map(str, list_int)) # 다시 문자열로 변환
print(list_int)
print(list_str2)

2) filter 함수

  • 정의 : 특정 조건으로 걸러서 걸러진 요소들로 iterator객체를 만들어서 리턴해줍니다.
  • 예제 - 리스트에서 짝수만 출력하기
target = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def is_even(n):
    return True if n % 2 == 0 else False

result = filter(is_even, target)

print(list(result))

3) 리스트컴프리헨션(list comprehension)

  • 정의 - 한 리스트에서 다른 리스트를 만들어내는 간결한 문법.
  • map과 filter 대신에 리스트컴프리헨션을 사용하기
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 각 원소의 제곱 리스트
squares = [x**2 for x in a]
print(squares)

# 짝수원소의 제곱 리스트
even_squares = [x**2 for x in a if x % 2 == 0]
print(even_squares)

4) 리팩토링요소

  • map과 filter 대신에 리스트컴프리헨션을 쓰자
  • 리스트컴프리헨션에서 표현식을 두개 넘게 쓰지말자
  • 컴프리헨션이 클 때는 제너레이터 표현식을 쓰자.

 

 

관련글 더보기

댓글 영역