본문 바로가기
프로그래밍/파이썬

파이썬 - 리스트 메서드 정리

by ennak 2024. 11. 25.
반응형

1. append()

특징

  • 리스트의 끝에 새로운 요소를 추가한다.
  • 하나의 요소만 추가할 수 있다.

예제

fruits = ['apple', 'banana']
fruits.append('cherry')
print(fruits)  # ['apple', 'banana', 'cherry']

주의사항

  • 리스트 자체가 변경되므로 반환값은 None이다.

이 점 때문에 실수를 했던 적이 있다. append()의 결과를 변수에 할당하려다 None을 얻게 되는 경우가 있었다. 메서드 체이닝을 할 때도 이 점을 주의해야 한다.

2. extend()

특징

  • 리스트에 다른 리스트나 반복 가능한 객체의 모든 요소를 추가한다.
  • 여러 요소를 한 번에 추가할 수 있다.

예제

fruits = ['apple', 'banana']
fruits.extend(['cherry', 'date'])
print(fruits)  # ['apple', 'banana', 'cherry', 'date']

주의사항

  • append와 달리, 리스트에 다른 iterable 객체(리스트, 튜플, 집합 등)의 모든 요소를 하나씩 추가하는 방식으로 작동한다.
  • extend를 사용할 때는 반드시 iterable 객체를 인수로 제공해야 한다는 점을 유의해야 한다.

한 번은 extend()와 append()를 혼동해서 사용하다가 큰 문제를 겪었다. 리스트 안에 리스트를 넣으려고 했는데, extend()를 사용해서 모든 요소가 평탄화되어 추가되는 실수를 했다. 이후로는 항상 의도를 명확히 하고 적절한 메서드를 선택하는 습관을 들였다.

3. insert()

특징

  • 특정 위치에 요소를 삽입한다.
  • 첫 번째 인자로 삽입할 위치의 인덱스를, 두 번째 인자로 삽입할 요소를 받는다.

예제

fruits = ['apple', 'banana']
fruits.insert(1, 'cherry')
print(fruits)  # ['apple', 'cherry', 'banana']

주의사항

  • 인덱스가 리스트의 길이보다 크면 끝에 추가된다.

이 특성 때문에 예상치 못한 동작이 발생할 수 있다. 특히 리스트의 길이를 정확히 모르는 상황에서 사용할 때는 주의가 필요하다. 가능하면 명시적으로 append()를 사용하는 것이 더 안전할 수 있다.

4. remove()

특징

  • 리스트에서 지정된 값을 가진 첫 번째 요소를 제거한다.

예제

fruits = ['apple', 'banana', 'cherry', 'banana']
fruits.remove('banana')
print(fruits)  # ['apple', 'cherry', 'banana']

주의사항

  • 지정된 값이 리스트에 없으면 ValueError가 발생한다.

    fruits = ['apple', 'banana', 'cherry', 'banana']
    fruits.remove('kiwi') # ValueError: list.remove(x): x not in list

이 에러 때문에 이슈를 겪었던 적이 있다. 특히 사용자 입력을 바탕으로 요소를 제거할 때 이 에러를 고려하지 않으면 프로그램이 예기치 않게 종료될 수 있다. 항상 try-except 구문을 사용하거나, in 연산자로 미리 확인하는 습관을 들여야겠다는 생각이 들었다.

5. pop()

특징

  • 지정된 인덱스의 요소를 제거하고 반환한다.
  • 인덱스를 지정하지 않으면 마지막 요소를 제거하고 반환한다.

예제

fruits = ['apple', 'banana', 'cherry']
popped = fruits.pop(1)
print(popped)  # banana
print(fruits)  # ['apple', 'cherry']

주의사항

  • 빈 리스트에서 pop을 호출하면 IndexError가 발생한다.

    fruits = []
    fruits.pop(0) # IndexError: pop from empty list

6. clear()

특징

  • 리스트의 모든 요소를 제거한다.

예제

fruits = ['apple', 'banana', 'cherry']
fruits.clear()
print(fruits)  # []

주의사항

  • 리스트 객체 자체는 그대로 유지되고 내용만 비워진다.

  • 리스트 객체 자체를 삭제하려면 del 키워드를 사용한다.

    fruits = ['apple', 'banana', 'cherry']
    del fruits  # 리스트 객체 자체를 삭제
    print(fruits) # NameError: name 'fruits' is not defined

del 키워드 사용에 주의해야 한다. 한 번은 실수로 중요한 리스트 변수를 del로 삭제해서 전체 프로그램에 문제를 일으킨 적이 있다. 변수 삭제는 매우 신중하게 접근해야 한다.

7. index()

특징

  • 지정된 값을 가진 첫 번째 요소의 인덱스를 반환한다.

예제

fruits = ['apple', 'banana', 'cherry', 'banana']
index = fruits.index('banana')
print(index)  # 1

주의사항

  • 지정된 값이 리스트에 없으면 ValueError가 발생한다.

    fruits = ['apple', 'banana', 'cherry', 'banana']
    index = fruits.index('kiwi') # ValueError: 'kiwi' is not in list

8. count()

특징

  • 리스트에서 지정된 값의 출현 횟수를 반환한다.

예제

fruits = ['apple', 'banana', 'cherry', 'banana']
count = fruits.count('banana')
print(count)  # 2

주의사항

  • 값이 리스트에 없으면 0을 반환한다.

    fruits = ['apple', 'banana', 'cherry', 'banana']
    count = fruits.count('kiwi')
    print(count) # 0

9. reverse()

특징

  • 리스트의 요소 순서를 역순으로 바꾼다.

예제

fruits = ['apple', 'banana', 'cherry']
fruits.reverse()
print(fruits)  # ['cherry', 'banana', 'apple']

주의사항

  • 리스트 자체를 변경하며 반환값은 None이다.

10. copy()

특징

  • 리스트의 얕은 복사본을 반환한다.

예제

fruits = ['apple', 'banana', 'cherry']
new_fruits = fruits.copy()
print(new_fruits)  # ['apple', 'banana', 'cherry']

주의사항

  • 얕은 복사이므로 중첩된 객체는 참조가 복사된다.

    list_A = ["ABC", ["DEF", "GHI"]]
    list_B = list_A.copy()
    list_B[1].append("JKL")
    print(list_A)  # ['ABC', ['DEF', 'GHI', 'JKL']]
    print(list_B)  # ['ABC', ['DEF', 'GHI', 'JKL']]

이런 참조 복사의 특성 때문에 많은 버그가 발생할 수 있다. 중첩된 리스트나 복잡한 객체를 다룰 때는 항상 복사 방식을 신중하게 선택해야 한다는 것을 깨달았다.

반응형

'프로그래밍 > 파이썬' 카테고리의 다른 글

파이썬 - 컴프리헨션  (0) 2024.11.27
파이썬 - 튜플 개념 정리  (0) 2024.11.26
파이썬 - 문자열 메서드 정리  (0) 2024.11.25
파이썬의 자료형  (0) 2024.11.24
파이썬의 기원과 철학, 특징  (1) 2024.11.24