튜플은 항목을 할당하고 나서 바꿀수없는 '불변(immutable)'한 성질을 갖습니다.
리스트는 그와 반대로 자유롭게 수정하거나 삭제할 수 있는 mutable한 성질을 갖습니다.
리스트 생성하기: [ ]또는 list()
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
empty_list=[] #빈 리스트 생성
empth_list_another=list() #빈 리스트 생성
참고로 리스트는 값이 유일할 필요가 없습니다.
요소들이 순서는 상관없이 유일한 값으로만 유지될 필요가 있다면,
리스트보단 셋(set)을 사용하는 것이 더 좋습니다.
슬라이스로 항목 추출
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
print(week[0:3]) #출력:['Monday', 'Tuesday', 'Wednesday']
print(week[::2]) #출력:['Monday', 'Wednesday', 'Friday', 'Sunday']
print(week[::-2]) #출력:['Sunday', 'Friday', 'Wednesday', 'Monday']
print(week[::-1]) #출력:['Sunday', 'Saturday', 'Friday', 'Thursday', 'Wednesday', 'Tuesday', 'Monday']
리스트의 슬라이스 또한 슬라이스입니다.
마지막 코드같은경우 리스트를 반전시키는 효과를 냅니다.
리스트 끝 항목 추가: append()
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
week.append('good')
print(week) #출력:['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'good']
특정 위치에 항목 추가: insert()
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
week.insert(2,'good')
print(week) #출력:['Monday', 'Tuesday', 'good', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
첫번째 인자로 오프셋을 주는데, 리스트의 끝을 넘는 오프셋을 주면 append()처럼 끝에다가 추가합니다.
오프셋으로 항목 삭제하기: del
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
del week[2]
print(week) #출력:['Monday', 'Tuesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
del은 리스트 함수가 아닌 파이썬 구문입니다.
del은 할당(=)의 반대입니다.
값으로 항목 삭제하기: remove()
리스트에서 삭제할 항목의 위치를 모르는 경우, 값을 이용해서 삭제할 수 있습니다.
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
week.remove('Tuesday')
print(week) #출력:['Monday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
오프셋으로 항목을 얻은 후 삭제하기: pop()
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
print(week.pop()) #맨마지막인 Sunday삭제
print(week.pop(3)) #오프셋3번에 위치한 Thursday삭제
print(week) #출력:['Monday', 'Tuesday', 'Wednesday', 'Friday', 'Saturday']
pop()은 리스트에서 항목을 가져오는 동시에 그 항목을 삭제합니다.
인자를 주지 않으면 -1을 사용합니다.(맨 끝)
값으로 오프셋 찾기: index()
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
print(week.index('Friday')) #출력:4
존재여부 확인: in
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
print('Sunday' in week) #출력:True
리스트에 값이 적어도 하나 존재하면 in은 True를 반환합니다.
값 세기: count()
test=['hi','hi','hi','hello',123]
print(test.count('hi')) #출력:3
리스트에 특정 값이 얼마나 있는지
리스트 병합하기: extend() 또는 +=
week=['Monday','Tuesday']
others=['hi','hello']
another=['world','python']
week.extend(others)
print(week) #출력:['Monday', 'Tuesday', 'hi', 'hello']
week+=another
print(week) #출력:['Monday', 'Tuesday', 'hi', 'hello', 'world', 'python']
week=['Monday','Tuesday']
a=100
other=['hello','hi']
week.append(a)
week.append(other)
print(week) #출력:['Monday', 'Tuesday', 100, ['hello', 'hi']]
이때 append()를 사용하면 항목을 병합하지 않고, 그 자체가 하나의 리스트로 추가됩니다.
(리스트는 다른 타입의 요소를 포함할 수 있습니다)
정렬하기: sort(), sorted()
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
week.sort()
print(week) #출력:['Friday', 'Monday', 'Saturday', 'Sunday', 'Thursday', 'Tuesday', 'Wednesday']
week.sort(reverse=True)
print(week) #출력:['Wednesday', 'Tuesday', 'Thursday', 'Sunday', 'Saturday', 'Monday', 'Friday']
- sort()는 리스트 자체를 내부적으로 정렬합니다.
- 기본적으로 오름차순으로 정렬
- reverse=True를 추가하면 내림차순으로 정렬됩니다
항목 갯수 얻기: len()
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
print(len(week)) #출력:7
할당: =, 복사: copy(), list()변환함수, 슬라이스[:]
a=[1,2,3]
b=a
print(b) #출력:[1, 2, 3]
b[0]='change'
print(b) #출력:['change', 2, 3]
print(a) #출력:['change', 2, 3]
주의할점은 b=a를 한 후에 b의 값을바꾸면 a의 값도 마찬가지로 변경이 됩니다.
마치 포인터를 사용하는 것 처럼..
위와같은 상황을 피하고 싶다면 복사를 해야합니다.
a=[1,2,3]
b=a.copy()
print(b) #출력:[1, 2, 3]
c=list(a)
print(c) #출력:[1, 2, 3]
d=a[:]
print(d) #출력:[1, 2, 3]
b[0]='changeB'
c[0]='changeC'
d[0]='changeD'
print(a) #출력:[1, 2, 3]
print(b) #출력:['changeB', 2, 3]
print(c) #출력:['changeC', 2, 3]
print(d) #출력:['changeD', 2, 3]
- copy() 함수
- list() 변환 함수
- 슬라이스 [:]
를 사용해서 한 리스트를 새로운 리스트로 복사할 수 있습니다.
이들은 자신만의 값을 가진 새로운 객체입니다.
'Python' 카테고리의 다른 글
[Python] 라인 유지하기: \ (0) | 2022.09.23 |
---|---|
[Python] 셋(Set) (0) | 2022.09.23 |
[Python] 딕셔너리(딕트) (0) | 2022.09.09 |
[Python] 튜플(tuple) (0) | 2022.09.09 |
[Python] 문자열 다루기 (0) | 2022.09.07 |