python list 부수기 (2)

초코바나나탕수육·2021년 11월 20일


오늘도 어김없이 찾아온 list 부수기 시간..!! 알고리즘을 풀어보며 느끼지만 기본이 중요하다고 다시 느꼈고 필요성을 느끼게 됐다 !! 오늘도 차근차근 쌓아보자


list에 데이터 추가하기(append가 아닌 +)

지난 글에서는 append method를 이용하여 list에 데이터를 추가해보았다. 오늘은 다른 방법인 + 에 대해 알아보자 !! (+로 추가하는 방법을 알면 append는 굳이 왜쓰나 라는 생각이 들었지만 곰곰히 생각해보니 list의 길이가 너무 길어짐과 동시에 추가적으로 뒤에 데이터를 넣어줘야하는 상황일때 쓰는게 아닐까.. 아님말고)

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7]

list1 + list2
print(list1)
[1, 2, 3, 4]

list1 = list1 + list2
print(list1)
[1, 2, 3, 4, 5, 6, 7]

위에 코드를 보면 알 수 있듯이 +를 사용해서 list를 합할 수 있다. 여기서 조심해야 할 점은 +를 사용하면 기존의 list가 수정되지 않고 새로운 list가 생성되기 때문에 저장하고자 하는 변수에 지정을 해줘야 한다는 것이다.


insert

append와 +말고 insert를 사용해서 새로운 데이터를 추가 할 수 있다. 앞의 두가지 방식과 다른점은 원하는 위치에 삽입할 수 있다는 점이다.

위와 같은 방식으로 추가를 하게 되는데, 명실상부 최고의 게임 LOL의 챔피언 list로 예를 들어보겠다.

champ = ["가렌", "갈리오", "나미", "나서스"]

LOL에 등장하는 챔피언을 가나다순으로 list에 넣어줬다. LOL을 즐기는 유저들은 알 수도 있지만 "가렌"과 "갈리오" 사이에 갱플랭크가 빠진 것을 알 수 있다. 여기서 갱플랭크를 추가하고자 한다면

champ.insert(1, "갱플랭크")
# ["가렌", "갈리오", "갱플랭크", "나미", "나서스"] 

이런식으로 삽입하고자 하는 데이터의 index를 지정해주어 추가할 수 있다.


list slicing

우리는 python에서 list의 일부분을 따로 copy할 수 있는데 이를 slicing이라고 한다.
이번에도 LOL 챔피언 리스트를 통해 살펴보자 !

champ = ["가렌", "갈리오", "갱플랭크", "나미", "나서스"]

위와 같은 list에서 갈리오와 갱플랭크만 따로 copy해서 sub_champ라는 list에 넣어주고 싶다면

sub_champ = champ[1:2]
print(sub_champ) 
#["갈리오", "갱플랭크"] 출력

이런식으로 시작과 끝의 index를 설정해주면 된다.
list slicing의 문법을 자세히 살펴보면

  1. list 이름이 먼저 위치하고
  2. 그 다음 중괄호가 열린다
  3. 부분적인 list가 시작할 첫번째 데이터의 index 번호를 써주고
  4. :으로 구분지어 준 뒤에
  5. 멈추고자 하는 데이터의 index 번호를 쓴 뒤 중괄호를 닫아준다.

의 순서로 진행하면 된다.

  • 또한 index값을 공백으로 줄 수 있는데 ( ex) [:2] or [0:] )
    시작 index가 공백이면 list의 처음 요소부터 시작, 끝 index가 공백이면 지정한 index부터 끝까지를 의미한다.

del , remove 로 list data 삭제하기

추가를 했으니 삭제하는 법을 알아보자. 이번에도 등장하는 챔피언들..

champ = ["가렌", "갈리오", "갱플랭크", "나미", "나서스"]

먼저 del을 사용해 갱플랭크를 지우고 싶다면

del champ[2]

이렇게 해당 요소의 index를 적어서 삭제 할 수 있다. 이렇게해서 삭제되면 해당 index는 바로 다음 순서인 나미로 채워지게 된다.

이번엔 remove를 이용해 갱플랭크를 지워보자 !

champ.remove("갱플랭크")

del과는 다르게 index 값이 아닌 삭제하고자 하는 데이터를 직접 입력함으로써 실행할 수 있다.


0개의 댓글