python list 부수기 (2)

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


오늘도 어김없이 찾아온 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개의 댓글