본문 바로가기

Python

enumerate와 list comprehension

공부는 했지만 잘 사용하지 못하는 것에 대한 함수다.

 

enumerate

열거하다 라는 뜻이다.

대게 for문에 사용되는데 range -> 정수 집합을 순회하는 루프를 실행할때 유용하고

enumerate는 리스트를 순회하거나 리스트의 인덱스를 같이 알아야 하는 경우 쓰기 유용하다.

 

food =['buger', 'pizza', 'kimchi', 'chicken']
print(list(enumerate(food)))

코드 실행결과

여기서 인덱스를 따로 설정해주지 않으면 0으로 자동설정되는데 인덱스를 따로 설정해 줄 수 도있다.

food =['buger', 'pizza', 'kimchi', 'chicken']
print(list(enumerate(food, start=2)))

코드 실행결과

for과 같이 써보면

today_diner =['buger', 'pizza', 'kimchi', 'chicken']
for i, dinner in enumerate(today_diner, start=1):
    print("%d : %s" % (i, dinner))

코드 실행결과

이와 같은 결과를 볼 수 있다.

 

리스트만 적용되는게 아니라 Tuple, String등 도 적용된다.

 

 

 

List comprehension (리스트 내포)

list comprehension을 사용하면 좀더 편리하고 직관적인 프로그램을 만들 수 있다는 장점이있다.

 

구문 작성 방법

newlist = [expression for item in iterable if condition == True]

 

일반 for 문으로 작성된 코드

food =['buger', 'pizza', 'kimchi', 'chicken']
newlist = []

for x in food:
    if "i" in x:
        newlist.append(x)

print(newlist)

코드 실행결과

 

List comprehension으로 작성된 코드

food =['buger', 'pizza', 'kimchi', 'chicken']
newlist = [x for x in food if "i" in x]

print(newlist)

코드 실행결과

똑같은 실행결과지만 코드가 확연히 가독성이 높아진걸 볼 수 있다.

 

 

if를 없이 사용

food =['buger', 'pizza', 'kimchi', 'chicken']
newlist = [x for x in food]
print(newlist)

실행 결과

 

range 이용

newlist = [x for x in range(10)]
print(newlist)

실행 결과

 

 

 

참조 : w3schools.com