Python : 컬렉션(리스트, 튜플)
컬렉션
- 여러 개의 값을 모아서 저장하는 데이터 타입
리스트
- 컬렉션의 대표적인 예는 리스트이다.
- 자료의 집합
- 변수는 하나의 값만 저장한다.
- 리스트는 여러개의 값을 집합으로 저장한다.
- [] 괄호 안에 요소를 콤마로 구분하여 나열한다.
- 리스트는 여러가지 면에서 문자열과 유사하다.
- 문자열 또한 문자를 모아 놓은 일종의 리스트이다.
- 리스트는 값을 변경 할 수 있다.
- 문자열은 값을 변경 할 수 없다.
- 리스트의 선언 방법은 []괄호 안에 콤마로 구분하여 나열 한다.
member = ["손오공", "저팔계", "사오정", "삼정법사"] print(member)
리스트 컴프리헨션
- 리스트 안의 요소가 일정한 규칙을 가지는 수열이라면 아래 문법으로 만들 수 있다.
- [] 괄호 안에 for 문, if 문 이 포함되어 있다. (if 조건은 필요 없을 시 생략 가능)
1에서 10까지 순회하며 그 2배되는 값을 리스트로 만들어 보는 예제
nums = []
for n in range(1, 11):
nums.append(n * 2)
# 컴프리헨션 사용
nums = [n * 2 for n in range(1,11)]
리스트 요소 추가
nums = [1, 2, 3, 4]
nums.append(5) # 5를 추가한다 [1, 2, 3, 4, 5]
nums.insert(2, 99) # 2번째 인덱스에 99를 추가한다. [1, 2, 99, 3, 4]
print(nums)
리스트 요소 삭제
- 요소를 삭제할 때는 삭제하는 대상에 따라 방법이 달라진다.
- remove : 인수로 전달 받은 값에 해당하는 요소를 삭제 할 때 사용한다.
- del : 특정 인덱스에 해당하는 요소를 지울 수 있다.
- [] : 특정 범위를 [] 값으로 대입하면 범위를 지울 수 있다.
- pop : 마지막 요소를 반환하고 리스트에서 지운다.
리스트 요소 삭제 예제
score = [88, 95, 70, 100, 99, 80, 78, 50]
score.remove(100) # 0번 인덱스에서 제일 처음 나오는 100을 삭제
del score[2] # 2번 인덱스에 해당하는 요소를 삭제 (70 삭제)
score[1:4] = [] #1번 인덱스부터 3번인덱스 까지 삭제
print(score.pop()) # 마지막 인덱스를 리턴하고 삭제
리스트 요소 검색
- 리스트의 검색 메서드는 문자열의 경우와 거의 같다
- index : 해당하는 요소에 해당하는 인덱스를 찾아준다.
- count : 특정 요소의 개수를 조사한다.
- len, min, max 내장 함수를 사용할 수 있다.
- in, not in 연산자를 사용할 수 있다.
사용자에게 입력 받은 요소를 검사하는 예제
ans = input("결제 하시겠습니까? ")
if ans in ['yes', 'y', '예', 'ok']:
print("결제 완료 되었습니다.")
else:
print("안녕히 가세요."
리스트 요소 정렬
- 정렬은 요소의 크기순으로 재배열 하는 것이다.
- sort : 요소의 순서를 정렬 할 수 있다.
- reverse : 요소의 순서를 만대로 만든다
- sorted(내장함수) : 원본을 변경하지 않고 정렬한 새로운 리스트를 반환한다.
튜플
- 튜플은 리스트와 비슷하지만 값을 변경 할 수 없다.
- 초기화한 후 편집할 수 없다.
- 상수 리스트라고도 부른다.
- 정의할 때는 ()괄호를 사용한다.
- 괄호없이 나열 했을 때도 튜플로 본다.
member = ("손오공", "저팔계", "사오정", "삼정법사")
print(member)
- 속도와 메모리 사용 차이가 있다.
- 리스트는 변경의 가능성을 대비해 더 많은 메모리를 사용한다.
- 변경 가능성이 없어 내부 구조가 단순해 속도가 더 빠르다.
- 안정적이다.
- 단순히 참조만 하면 되는 값은 튜플로 받는것이 더 안정적이다.
score = (88, 95, 70, 100, 99) # 튜플정의
score1 = 88, 95, 70, 100, 99 # 괄호 없는 튜플
tuple_value = 2, # 값이 하나인 튜플
print(score[3]) # 리스트와 같은 접근이 가능하다
print(score[1:4])
print(score[:4])
print(score + (6, 7)) # 튜플 맨뒤에 6, 7의 요소가 추가 된다.
print(score * 2) # 튜플의 요소값이 2배가 되는 것이 아니고 요소가 2배로 늘어 나는것
# [88, 95, 70, 100, 99, 6, 7, 88, 95, 70, 100, 99, 6, 7]
tuple_value[1] = 100 # TypeError
del tuple_value[1] # TypeError
# 튜플의 요소를 변경하거나 삭제할 수 없다.
튜플과 리스트의 호환
# 튜플과 리스트는 서로 변경할 수 있다.
score = [88, 95, 70, 100, 99]
tu = tuple(score)
print(tu)
li = list(tu)
li[0] = 100
print(li)
튜플 언패킹(Unpacking)
- 튜플은 여러개의 변수에 값을 한번에 대입하는 기능을 제공한다.
- 좌변에 변수 목록을 적고 우변에 튜플을 대입하면 튜플의 요소가 하나씩 변수에 대입된다.
- 단, 좌변의 갯수와 튜플의 요소 개수는 같아야한다.
튜플 언패킹 예제
member = ("이순신", "김유신", "강감찬")
lee, kim, kang = member
print(lee)
print(kim)
print(kang)
댓글남기기