본문 바로가기
programming/Python

파이썬 리스트 값 변경하기 Changing item Value in Python List

by 개코 - 개발과 코딩 2021. 8. 12.

파이썬에서 리스트 내부의 값을 변경하는 것은 어렵지 않다. 변경하고자 하는 인덱스를 지정하여 값을 설정하면 되거나 범이를 지정하여 갯수만큼 값을 변경해 줄 수 있다. 하지만 범위를 지정할 경우 마지막 값이 지정되지 않음을 명심하자. 파이썬의 범위가 조금 난해할 수 있다.

파이썬 리스트 값 변경
파이썬 리스트 값 변경

 

리스트 준비

리스트 조작하기 위한 데이터를 준비한다.

조작할 리스트를 설정하고 반복문으로 데이터를 하나씩 출력하였다.

앞에 나온 숫자는 값의 인덱스번호이다.

인덱스번호는 index() 함수를 이용한다.

vList = ["JYP", "트와이스", "정연", "모모", "지효", "채영", "쯔위", "다현", "나연", "미나", "사나"]

print("vListStr List :", type(vList), len(vList), vList)

print('----------------------------------------------------------------------------------------------------')

for lpVal in vList:
    print("vList List :", type(lpVal), vList.index(lpVal), lpVal)

 

인덱스를 이용한 값 변경

인덱스를 이용하여 파이썬 리스트의 값을 변경하도록 한다.

변경하고자 하는 위치의 인덱스를 지정하고 값을 설정하면 그만이다.

특정 부분의 값을 변경하도록 하자.

 

첫번째 트와이스 란 한글 문자를 영문자 twice 로 변경해볼 것이다.

트와이스의 인덱스는 1이다.

vList[1] = "twice"
print("vListStr List :", type(vList), len(vList), vList)

결과화면을 보면 한글문자열 트와이스 란 단어가 영문자열 twice 로 변경된 것을 볼 수 있다.

 

범위를 지정하여 값 변경

파이썬에서 범위를 지정하는 방법은 엑셀의 그것과 같고, 대괄호를 이용한다.

범위지정 형식은 [ 시작위치 : 끝위치 ] 이며 위치에는 인덱스가 들어간다.

하지만, 파이썬의 특성상 끝위치 인덱스의 값은 포함하지 않는다.

 

인덱스가 2인 위치부터 4인 위치까지 값을 변경한다.

인덱스 위치가 2, 3, 4 로 3개의 값이 들어갈 것으로 보이지만, 위에 언급한 대로 파이썬의 리스트 범위의 마지막 값은 설정되지 않는다. 그렇기에 올바른 변경될 값은 2개이다.

vList[2:4] = ["JeongYeon", "Momo"]
print("vListStr List :", type(vList), len(vList), vList)

인덱스 위치 2, 3 위 위치는 각각 정연, 모모 이다.

영문자로 변경된 것을 확인할 수 있다.

 

범위보다 값이 많을 경우

보통의 리스트라면 지정한 범위보다 값이 많이 설정될 경우 에러가 날 수 있지만, 파이썬 무시하는 듯 하다.

코드를 보자.

인덱스 4, 5 위치의 범위를 지정했지만, 파이썬 리스트 특성상 인덱스 4번만 허용되지만, 이 경우 범위를 넘어선 경우이다.

이 경우 정상적으로 값은 추가되지만 범위를 벗어난 값은 변경된 값 다음에 추가되는 현상을 보여준다.

vList[4:5] = ["Jihyo", "ChaeYoung"]
print("vListStr List :", type(vList), len(vList), vList)

결과를 보면 정상적으로 변경된 인덱스 4 위치 다음에 지정한 범위를 넘어간 만큼의 값이 추가된 것을 알 수 있다.

 

범위보다 값이 부족할 경우

범위보다 값이 부족할 경우는 지정한 범위의 값을 수정하고 이후 값은 제거된다.

수정할 범위는 인덱스 4번부터 6번까지의 위치지만 설정된 값은 2개 밖에 없다.

이 경우 정상적으로 수정되는 인덱스 위치 값은 4번 5번 이며 부족한 부분만큼 값이 삭제된다.

vList[4:7] = ["Jihyo", "ChaeYoung"]
print("vListStr List :", type(vList), len(vList), vList)

반응형

댓글