리스트 끝에 요소 하나 추가
요소에 리스트를 넣으면 중첩 리스트가 된다.
메서드를 호출한 리스트가 변경되며 새 리스트는 생성되지 않는다.
리스트에 요소를 여러 개 추가할 수 있다.
리스트 끝에 다른 리스트를 연결하여 리스트 확장
메서드를 호출한 리스트가 변경되며 새 리스트는 생성되지 않는다.
원하는 위치에 요소를 추가할 수 있다.
리스트의 특정 인덱스에 요소 하나를 추가
시퀀스 자료형에서 배운 '슬라이스에 요소 할당하기'를 활용한다.
리스트[1:1] = [100, 200]과 같이 시작인덱스와 끝인덱스를 같게 지정하면 해당 인덱스의 요소를 덮어쓰지 않으면서 요소 여러 개를 중간에 추가할 수 있다.
해당 인덱스의 요소를 삭제한 뒤 삭제한 요소를 반환
인덱스를 생략하면 리스트의 마지막 요소를 삭제한 뒤 삭제한 요소를 반환한다.
pop 대신 del도 가능하다.
리스트에서 특정 값을 찾아서 삭제
같은 값이 여러 개 있을 경우 처음 찾은 값을 삭제한다.
append(), pop()
append(), pop(0) 또는 insert(0, 요소), pop()
큐는 좀 더 효율적으로 사용하도록 데크(deque, double ended queue)라는 자료형을 제공한다.
collections 모듈에서 deque를 가져와 사용한다.
-> from collections import deque
append(), popleft() 또는 appendleft(), pop()
리스트에서 특정 값의 인덱스를 구한다.
값은 값이 여러 개일 경우 처음 찾은 인덱스(가장 작은 인덱스)를 구한다.
리스트에서 특정 값의 개수를 구한다.
리스트에서 요소의 순서를 반대로 뒤집는다.
리스트의 요소를 작은 순서대로 정렬한다.-> 오름차순
sort()로 간단히 작성할 수도 있다.
내림차순 정렬은 reverse옵션을 True로 설정하면 된다.
리스트의 모든 요소를 삭제한다.
리스트 메서드를 사용하지 않고, 슬라이스로 조작하면 성능적으로도 더 좋다.
# 동일한 효과
a[len(a):] = [500]
a.append(500)
# 동일한 효과
a[len(a):] = [500, 600]
a.extend([500, 600])
리스트의 마지막 요소에 접근할 때 유용하게 사용 가능
if not seq: # 리스트가 비어 있으면 True
if seq: # 리스트에 내용이 있으면 True
if not len(seq): # 리스트가 비어 있으면 True
if len(seq): # 리스트에 요소가 있으면 True
seq = []
if seq:
print(seq[-1])
할당 시 같은 객체를 참조한다.
따라서 완전히 두 개로 만들려면 copy 메서드로 모든 요소를 복사해야 한다.
a = [0, 0, 0, 0, 0]
b = a # 할당
b = a.copy() # 복사
리스트에서 요소를 꺼내서 변수에 저장하고, 꺼낼 때마다 코드를 반복한다.
모든 요소를 순서대로 출력 가능
range에 len으로 리스트의 길이를 구해서 넣어주면 인덱스를 순서대로 만들 수도 있다.
요소 뿐만 아니라 인덱스로 함께 출력 가능
시작 인덱스를 지정할 수도 있다.
리스트의 인덱스는 0부터 시작하고 마지막 인덱스는 리스트 길이보다 1이 작으므로 <를 사용한다.
리스트 안에 식, for 반복문, if 조건문 등을 지정하여 리스트를 생성하는 것
식으로 지정해서 생성된 것을 리스트로 잡아둔다는 의미
뒤에서 앞으로 읽으면 간단하다.
리스트의 요소를 변수로 하나씩 꺼내오고, 최종적으로 식을 이용하여 리스트 생성
둘 중에 성능은 대괄호 방식이 더 좋다.
for 반복문과 if 조건문을 여러 번 사용할 수도 있다.
a = [i * j for j in range(2, 10)
for i in range(1, 10)]
처리 순서는 뒤에서 앞으로 순이다.
map은 리스트의 요소를 지정된 함수로 처리해주는 함수
원본 리스트를 변경하지 않고 새 리스트를 생성한다.
map에는 리스트 뿐만 아니라 모든 반복 가능한 객체(이터레이터)를 넣을 수 있다.
list(map(int, [1.2, 2.5, 3.7, 4.6]))
list(map(str, range(10)))
list(map(int, input().split())
map 객체 상태로는 안에 들어있는 값을 볼 수 없으므로 list를 사용해서 리스트로 출력한다.
map 객체는 이터레이터라서 변수 여러 개에 저장하는 언패킹이 가능하다.
튜플은 불변이기 때문에, 내용을 변경하는 메서드는 사용할 수 없고, 요소의 정보를 구하는 메서드만 사용 가능하다.
모든 방법이 리스트와 거의 동일하나, 아래의 차이점이 존재한다.
()안에 표현식을 넣으면 튜플이 아니라 제너레이터 표현식이 된다.