본문 바로가기
programming/Python

파이썬 리스트 반복문 사용 Python List For While Comprehension

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

파이썬에서 리스트의 개별 값들에 접근하기 위해 인덱스를 사용할 수도 있지만 반복문을 사용하여 전체적인 값들을 접근하여 조작할 수 있다. 반복문이라 하면 보통 for문과 while문이 있다. 이 반복문을 사용하여 파이썬 리스트의 값들을 접근하고 출력을 해 본다.

파이썬 리스트 반복문 사용하기
파이썬 리스트 반복문 사용하기

 

반복문

프로그래밍에서 반복문은 공통되고 반복되는 작업을 위해 사용한다.

주로 for 키워드와 while 키워드를 사용하며 다른 프로그래밍 언어에서도 사용된다.

프로그래밍을 하다보면 가장 많이 사용되는 것 중 하나이다.

 

샘플 데이터 준비

반복문을 사용하기 위해 적당한 샘플 데이터를 만들어 본다.

적당히 가시적으로 확인할 수 있을 정도의 리스트 데이터를 만들면 된다.

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

print("목록 : ", type(vList), len(vList), vList)

단순 출력결과는 아래와 같다.

이 리스트의 내용을 반복문을 사용하여 출력해 보도록 한다.

 

반복문 for 사용

for 키워드를 사용하는 반복문은 다른 프로그래밍 언어에서도 사용된다.

사용법은 조금씩 차이가 있지만 파이썬에서는 리스트와 같은 컬렉션에서 쉽게 사용할 수 있도록 하고 있다.

리스트의 개별값을 출력하기 위한 for 키워드를 사용해 본다.

for vEach in vList:
    print("개별 값 : ", type(vEach), vList.index(vEach), vEach)

vEach 는 for 반복문이 반복되면서 자동으로 개별값에 접근한 값을 가지고 있다.

결과를 보면 알 수 있다.

숫자는 인덱스이다.

리스트의 개별 인덱스를 보기 위해서는 List.index( 값 ) 함수를 사용한다.

 

for 키워드로 반복문 사용시 인덱스를 사용하여 작업을 할 수 있다.

len( List ) 함수로 리스트의 전체 길이를 구한 후 range( 숫자 ) 함수에 범위로써 지정되었다.

for vRange in range(len(vList)):
    print("개별 값 : ", vRange, type(vList[vRange]), vList.index(vList[vRange]), vList[vRange])

지정한 범위로 인덱스 값이 출력되는 것을 알 수 있다.

리스트의 범위는 인덱스가 0부터 시작한다.

 

반복문 While 사용

while 키워드는 for 키워드하고는 다르게 조금 번거롭다.

반복을 위한 조건이 필요하고 조건에 맞는 식을 만들어 주어야 한다.

그렇다고 해도 자주 사용되는 것이 while이다.

for 키워드는 주어진 범위의 반복을 한다면, while 키워드는 조건에 따라 반복한다.

vIdx = 0
while vIdx < len(vList):
    print("개별 값 : ", vIdx, type(vList[vIdx]), vList.index(vList[vIdx]), vList[vIdx])
    vIdx = vIdx + 1

인덱스로 사용할 변수를 만들고 0부터 시작하도록 하였다.

조건을 보면 인덱스로 사용할 변수가 리스트의 길이보다 작을 때까지 반복하도록 하였다.

결과화면은 위의 이미지와 크게 다르지 않다.

하지만, 코드와 사용법에 차이가 있음을 생각해 본다.

 

리스트 Comprehension 사용

리스트 컴프리헨션은 반복에 대한 새로운 리스트를 만들 수 있다.

컴프리헨션 구문 앞에 다른 키워드를 사용하면 출력이나 변수에 값을 설정할 수 있다.

복잡한 구문을 단순화 시킬 수 있는 장점이 있기에 익숙해 지도록 하자.

[print("개별 값 : ", type(vEach), vEach) for vEach in vList]

for 키워드를 사용하여 반복적인 출력을 하도록 하였다.

재밌는 구문이기도 한데 C# 의 Lambda식이나 Linq 식과 비슷한 느낌을 보여준다.

단지, 위의 다른 결과 이미지와 차이점은 인덱스를 넣어주지 않았다.

타입에러가 발생했기 때문이기도 하다.

그렇다면 예상할 수 있는 한가지는 이 컴프리헨션에서는 컬렉션이 아닌 단일값으로 처리되어 동작하는 것으로 알 수 있다.

반응형

댓글