All Articles

Python - list

list란

list는 자료 관리를 효율적으로 하기 위해 사용한다. 다뤄야 할 값이 많을 때 각기 다른 변수에 할당해준 후 사용해야 한다면 여러모로 비효율적이기 때문이다.

student1 = "김학생"
student2 = "정학생"
student3 = "강학생"
student4 = "최학생"
student5 = "이학생"
student6 = "박학생"
student7 = "문학생"

list를 사용한다면 길게 늘어진 학생 목록을 간결하게 표현할 수 있다.

students = ["김학생", "정학생", "강학생", "최학생", "이학생", "박학생", "문학생"]

list 요소 관리/이용법

  • 리스트.append()
    list에 요소를 추가할 때 사용한다. list 제일 뒤에 추가되며, 한 번에 요소 1개씩만 추가할 수 있다.
fruits = ["토마토", "사과", "수박"]
fruits.append("딸기")
print(fruits)
# 출력값
['토마토', '사과', '수박', '딸기']

기존 list 가장 뒤에 딸기 요소가 추가되었다.

  • 리스트1 + 리스트2
    요소 여러 개를 한 번에 추가하고 싶으면 list와 list를 합치는 방식을 이용하면 된다. 단, 이 연산은 기존 list를 변경하는 것이 아니기 때문에 요소를 모두 합친 list로 출력하고 싶다면 다시 할당해주어야 한다.
foods = ["햄버거", "피자", "비빔밥"]
drinks = ["콜라", "탄산수", "주스"]

print(foods + drinks)
print(foods)
print(drinks)
# 출력값
['햄버거', '피자', '비빔밥', '콜라', '탄산수', '주스']
['햄버거', '피자', '비빔밥']
['콜라', '탄산수', '주스']

두 list를 합쳤지만 각 list를 출력해보면 여전히 합치기 전과 같다. 따라서 원 list를 호출했을 때 요소를 더한 새 list로 출력되길 원한다면,

foods = foods + drinks
print(foods)
# 출력값
['햄버거', '피자', '비빔밥', '콜라', '탄산수', '주스']

이렇게 원 list에 다시 할당해주면 된다.

  • 리스트.insert(인덱스, 요소)
    append로는 list 맨 마지막에만 추가할 수 있었지만, insert를 이용하면 원하는 위치에 요소를 넣을 수 있다.
numbers = [0, 1, 2, 4, 5, 6]

numbers.insert(3, 3)
print(numbers)
# 출력값
[0, 1, 2, 3, 4, 5, 6]

인덱스 3 위치에 원하는 요소가 잘 들어갔다.
인덱스는 0부터 센다. 따라서 list 첫 번째 요소가 인덱스 0번이다. 1번이 아니다.

  • 리스트[인덱스] = 수정할 값
    특정 요소를 다른 값으로 바꾸고 싶으면 인덱스 번호로 찾아준 뒤 다시 할당해준다.
last_name = ["김", "이", "박", "Smith", "정", "강"]

last_name[3] = "문"
print(last_name)
# 출력값
['김', '이', '박', '문', '정', '강']

3번 인덱스 값이 다시 할당해준 값으로 바뀌었다.

  • 리스트[시작 인덱스:끝 인덱스]
    list에서 일부 요소만 잘라낼 때(slicing) 쓴다. 시작 인덱스부터 끝 인덱스 전까지가 범위에 들어온다.
    이때, 시작 인덱스 번호에 해당하는 요소는 포함이지만 끝 인덱스에 해당하는 요소는 포함되지 않는다. 그 직전 요소까지만 포함된다.
countries = ["대한민국", "스웨덴", "미국", "뉴질랜드", "헝가리", "에스토니아"]

print(countries[1:5])
print(countries)
# 출력값
['스웨덴', '미국', '뉴질랜드', '헝가리']
['대한민국', '스웨덴', '미국', '뉴질랜드', '헝가리', '에스토니아']

1번 인덱스인 “스웨덴”부터 5번 인덱스인 “에스토니아” 직전 요소인 “헝가리”까지 포함된 list가 출력되었다.

slicing도 list 합치기와 마찬가지로 원 list를 변경하는 것이 아니다. 따라서 원 list를 호출했을 때 slicing 후의 list를 출력하길 원한다면 다시 할당해주어야 한다.

countries = ["대한민국", "스웨덴", "미국", "뉴질랜드", "헝가리", "에스토니아"]

countries = countries[1:5]
print(countries)
# 출력값
['스웨덴', '미국', '뉴질랜드', '헝가리']
  • 리스트[시작 인덱스:끝 인덱스:주기]
    단순 잘라내기뿐만 아니라 해당 범위 안에서 몇 번째 요소만 뽑아낼지 지정할 수 있다.
countries = ["대한민국", "스웨덴", "미국", "뉴질랜드", "헝가리", "에스토니아"]

countries = countries[1:5:2]
print(countries)
# 출력값
['스웨덴', '뉴질랜드']

1번 인덱스부터 5번 인덱스 직전 요소까지 범위를 정한 뒤, 해당하는 범위 내에서 2칸 주기로 요소를 다시 뽑아낸다.

  • del 리스트[인덱스], 리스트.remove[요소]
    list 요소를 삭제하는 방법은 두 가지가 있다. 인덱스 번호에 해당하는 요소를 지울 수도 있고, 요소 자체를 지정해서 지울 수도 있다.
apple = ["아이맥", "맥북", "아이패드", "갤럭시", "아이폰", "미밴드", "애플워치"]

del apple[3]
apple.remove("미밴드")

print(apple)
# 출력값
['아이맥', '맥북', '아이패드', '아이폰', '애플워치']

3번 인덱스인 “갤럭시”와 “미밴드” 요소가 삭제되었다.