프롬프트
프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.마이크로파이썬에서 list 자료형의 메소드를 나열하고, 그 사용법을 설명해 줘.
AI가 만든 결과
MicroPython의 list
자료형은 일반적인 Python의 리스트와 매우 유사한 메서드를 제공합니다. 다만, MicroPython 버전에 따라 일부 메서드가 누락되었거나 동작이 제한적일 수 있으므로, 사용하는 버전에 맞춰 공식 문서를 참고해야 합니다. 아래는 대표적인 리스트 메서드와 그 사용법을 간단히 정리한 것입니다.
1. append(x)
- 기능: 리스트의 끝에 새로운 요소
x
를 추가합니다. - 사용 예시:
my_list = [1, 2, 3] my_list.append(4) print(my_list) # [1, 2, 3, 4]
2. extend(iterable)
- 기능: 주어진 순회 가능한(iterable) 객체의 요소들을 리스트의 끝에 추가합니다.
- 사용 예시:
my_list = [1, 2, 3] my_list.extend([4, 5, 6]) print(my_list) # [1, 2, 3, 4, 5, 6]
+=
연산자로도 같은 효과를 낼 수 있습니다.my_list = [1, 2, 3] my_list += [4, 5] print(my_list) # [1, 2, 3, 4, 5]
3. insert(index, x)
- 기능: 리스트의
index
위치에x
를 삽입합니다. - 사용 예시:
my_list = [1, 2, 3] my_list.insert(1, 10) # 인덱스 1 위치에 10 삽입 print(my_list) # [1, 10, 2, 3]
4. remove(x)
- 기능: 리스트에서 첫 번째로 등장하는
x
를 제거합니다.x
가 존재하지 않으면ValueError
가 발생합니다. - 사용 예시:
my_list = [1, 2, 3, 2] my_list.remove(2) print(my_list) # [1, 3, 2]
- 첫 번째
2
만 제거됩니다.
- 첫 번째
5. pop([index])
- 기능: 리스트에서 지정한
index
위치의 요소를 꺼내(반환)고, 해당 요소를 리스트에서 제거합니다.index
를 생략하면 기본적으로 마지막 요소를 꺼냅니다.
-
사용 예시:
my_list = [10, 20, 30, 40] popped_value = my_list.pop() print(popped_value) # 40 (마지막 요소) print(my_list) # [10, 20, 30] popped_value = my_list.pop(1) print(popped_value) # 20 print(my_list) # [10, 30]
6. clear()
- 기능: 리스트의 모든 요소를 제거합니다(빈 리스트로 만듭니다).
- 사용 예시:
my_list = [1, 2, 3, 4] my_list.clear() print(my_list) # []
7. index(x[, start[, end]])
- 기능: 리스트에서
x
가 처음으로 등장하는 인덱스를 반환합니다.start
와end
인덱스를 지정해 검색 범위를 제한할 수도 있습니다(해당 인덱스는 선택적).
-
사용 예시:
my_list = ['a', 'b', 'c', 'b'] idx = my_list.index('b') print(idx) # 1 (첫 번째 b의 위치) idx_range = my_list.index('b', 2) # 인덱스 2부터 검색 print(idx_range) # 3
8. count(x)
- 기능: 리스트 내에서
x
가 등장하는 횟수를 반환합니다. - 사용 예시:
my_list = [1, 2, 2, 3, 2] cnt = my_list.count(2) print(cnt) # 3 (2가 세 번 등장)
9. sort([key, reverse])
- 기능: 리스트의 요소를 제자리(in-place)에서 정렬합니다.
- 사용 예시:
my_list = [3, 1, 4, 2] my_list.sort() print(my_list) # [1, 2, 3, 4]
- 옵션:
reverse=True
를 지정하면 내림차순으로 정렬합니다.key
함수(예:key=lambda x: x[1]
)를 사용해 사용자 정의 기준으로 정렬할 수도 있지만, 마이크로파이썬의 일부 버전에서 사용이 제한될 수 있습니다.
10. reverse()
- 기능: 리스트의 순서를 제자리에서 반전시킵니다(역순).
- 사용 예시:
my_list = [1, 2, 3, 4] my_list.reverse() print(my_list) # [4, 3, 2, 1]
추가로 참고할 만한 사항
copy()
메서드- 일반 Python(CPython)에서는
list.copy()
로 리스트를 얕은 복사(shallow copy)할 수 있습니다. - MicroPython 버전에 따라
copy()
가 구현되어 있지 않을 수 있으므로, 아래와 같은 슬라이싱 방식으로 복사하기도 합니다.copied_list = my_list[:] # 슬라이싱을 통한 얕은 복사
- 사용 환경에 따라
copy()
가 동작하지 않을 수 있으니, 필요하다면 슬라이싱을 사용하면 호환성을 높일 수 있습니다.
- 일반 Python(CPython)에서는
메모리 제약
- MicroPython은 일반 Python에 비해 메모리 제한이 있는 환경에서 동작하는 경우가 많습니다.
- 리스트의 크기가 매우 커지지 않도록 주의해야 하며, 중복 데이터를 다룰 때는 보다 효율적인 자료 구조(예:
array
모듈,deque
, 제너레이터 등)를 고려해볼 수 있습니다.
동작 시간(복잡도)
- 리스트 메서드별 시간 복잡도는 일반 Python과 유사합니다. 예:
append()
는 평균적으로 O(1),pop()
마지막 요소는 O(1),pop(0)
은 O(n) (리스트 처음에서 제거 시),remove(x)
는 x를 찾는 데 O(n) 등.
- 마이크로컨트롤러같이 CPU 성능이 낮은 환경에서는, 대량의 리스트 연산 시 성능 저하를 유의해야 합니다.
- 리스트 메서드별 시간 복잡도는 일반 Python과 유사합니다. 예:
위의 메서드들을 숙지하고 활용하면, 마이크로파이썬에서도 일반 Python과 유사한 방식으로 리스트를 조작할 수 있습니다. 다만, 플랫폼 및 버전에 따라 일부 메서드나 인자(key
, reverse
, copy()
등)의 지원 여부가 다를 수 있으니, 실제 개발 환경에 맞춰 테스트해 보는 것을 권장합니다.