여기서는 메서드 이름을 외우기보다 원본 리스트를 어떤 방식으로 바꾸고 싶은지를 먼저 봅니다.
하나를 끝에 붙일지, 여러 개를 이어 붙일지, 값으로 지울지, 위치에서 꺼낼지에 따라 append, extend, remove, pop이 갈립니다.
숏컷 코드
items = ["a", "b"]
items.append("c")
items.extend(["d", "e"])
items.remove("b")
last = items.pop()
items.sort()문법
기본형은 끝 추가, 여러 항목 추가, 위치 삽입, 값 삭제, 위치 삭제, 원본 정렬까지 같이 보면 됩니다.
items = ["a", "b"]
items.append("c")
items.extend(["d", "e"])
items.insert(1, "x")
items.remove("b")
last = items.pop()
value = items.pop(0)
items.sort(key=str.lower, reverse=False)list 메서드는 대부분 새 리스트를 반환하지 않고 원본을 직접 바꿉니다.
그래서 무엇을 "새 결과"로 만들려는지보다, 지금 가진 리스트를 어떻게 수정할지 먼저 보는 편이 빠릅니다.
추가 방식
하나를 끝에 붙이면 append, 여러 항목을 잇는다면 extend다
원소 하나를 끝에 더하는 가장 기본 패턴입니다. 리스트를 단계적으로 쌓을 때 가장 많이 보입니다.
items = [1, 2]
items.append(3) # [1, 2, 3]새 리스트를 만드는 것이 아니라 원본을 직접 바꾼다는 점도 같이 기억해야 합니다.
리스트 하나를 통째로 원소로 넣는 것이 아니라, 그 안의 항목들을 풀어서 뒤에 잇고 싶다면 extend()가 맞습니다.
items = [1, 2]
items.extend([3, 4]) # [1, 2, 3, 4]append([3, 4])와 가장 자주 헷갈리는 구간이므로, "하나의 원소냐 / 여러 원소를 이어 붙이냐"를 분명히 보고 써야 합니다.
삽입과 삭제
지정 위치에 끼워 넣으면 insert, 값과 위치 삭제는 나눠서 읽는다
중간 위치를 직접 지정해서 넣고 싶을 때는 insert()를 씁니다.
items = [10, 20, 30]
items.insert(1, 99) # [10, 99, 20, 30]자주 쓰이는 메서드는 아니지만, UI 리스트 순서 보정이나 특정 위치에 헤더를 끼워 넣는 작업처럼 "정확한 자리"가 중요할 때 유용합니다.
remove(x)는 값이 같은 첫 항목을 지웁니다.
pop(i)는 인덱스 위치의 값을 꺼내면서 지웁니다.
items = ["a", "b", "c", "b"]
items.remove("b") # 첫 번째 "b" 제거
last = items.pop() # 마지막 값을 꺼내며 제거즉 "이 값을 지워라"면 remove, "이 위치 값을 꺼내 와라"면 pop이라고 읽으면 됩니다.
정렬 경계
원본을 바로 정렬하면 sort, 새 결과가 필요하면 sorted다
정렬은 list 메서드 중에서 실수하기 쉬운 구간입니다.
sort()는 원본을 바꾸고, sorted()는 정렬된 새 리스트를 돌려줍니다.
users = ["mina", "Jin", "sora"]
users.sort(key=str.lower)
ordered = sorted(users, key=len, reverse=True)지금 들고 있는 리스트 자체를 고쳐도 되는지, 원본 보존이 필요한지를 먼저 보면 판단이 빨라집니다.
names = ["Mina", "jin", "Sora"]
sorted_names = sorted(names, key=str.lower)
names.sort(key=str.lower)주의할 점
append()와 extend()를 헷갈리면 리스트 모양이 달라집니다.
# ❌ 리스트 하나가 통째로 들어간다
items = [1, 2]
items.append([3, 4])
print(items) # [1, 2, [3, 4]]
# ✅ 원소들을 이어 붙인다
items = [1, 2]
items.extend([3, 4])
print(items) # [1, 2, 3, 4]# ❌ 값이 없는데 remove()를 쓰면 예외
items = ["a", "b"]
# items.remove("z")
# ✅ 값이 없을 수도 있으면 먼저 확인하거나 filter
if "z" in items:
items.remove("z")# ❌ sort() 반환값을 새 리스트처럼 받으면 None
items = [3, 1, 2]
ordered = items.sort()
# ✅ 새 결과가 필요하면 sorted()
ordered = sorted(items)참고 링크
2 sources