TIL-no.21 Python List comprehension

sanghun Lee·2020년 7월 3일
0

Today I Learned

목록 보기
19/66

List comprehension

파이썬의 list와 관련한 유용한 도구들을 보자!


이때까지 배운걸로 정사각형 넓이를 구해보자

areas = []
for i in range(1,11):
	areas = areas + [i*i]#extend나 append를 써도 될듯
print(areas)
#output - > [1,4,9,16,25,36,49,64,81,100]

이것보다 간단하게 만들어보자

areas2 = [i*i for i in range(1,11)]
print(areas2)
#output - > [1,4,9,16,25,36,49,64,81,100]

for문을 돌며 i를 가져오고 계산할 식을 i*i 에 넣는 것임.
이렇게 list의 사용법을 이용하여 코드수를 줄이는 기법을 list comprehension이라고 한다.

특정조건이 필요하다면 어떻게 해야할까
길이가 짝수인 정사각형의 넓이만 구할때를 보자

areas = []
for i in range(1,11):
	if i%2 == 0:
		areas = areas + [i*i]#extend나 append를 써도 될듯
print(areas)
#output - > [4,16,36,64,100]

더 간단하게 해보자 list comprehension

areas= [i*i for i in range(1,11) if i%2 == 0]
print(areas)
#output - > [4,16,36,64,100]

또 다른 기능은 for 문을 중첩하여 바둑판을 만들 수 있다.

[(x,y) for x in range(15) for y in range(15)]
#output
(0,0)~(0,14)
(1,1)~(1,14)
...
(14,1)~(14,14)

예제를 보자

  • 문제)1부터 100사이의 8의 배수를 가지도록 list1을 만들어보고 출력해 보아라
list1 = [i for i in range(1,101) if i%8==0)
	print(list1)

Dictionary comprehension

list컴프리헨션과 비교했을때 괄호모양과 순서등을 유의하며 보자

students = ["호날두","메시","박지성","손흥민","차범근"]

for number, name in enumerate(students):
	print("{}번의 이름은 {}입니다.".format(number,name))
#output
0번의 이름은 호날두입니다.
...
4번의 이름은 차범근입니다.

enumerate를 이용해보자

students_dict = {"{}번".format(number+1):name for number, name in enumerate(students))
#output
{'1번':'호날두','5번':'차범근','4번':'손흥민','3번':'박지성','2번':'메시'}

넘버와 네임을 Enumerate에서 가져와서 key는 format이 달린 형태를 만들어주고 이름을 값으로 넣어줌.
(뭔소리지)

zip

두개이상의 list나 string을 받아들여 Index에 맞게 for in 문에서 하나씩 던저줄 수 있게 만드는 역할을 한다.

scores = [85,92,78,90,100]
students = ["호날두","메시","박지성","손흥민","차범근"]

for x, y in zip(students, scores):
	print(x,y)
#output 
호날두 85
메시 92
박지성 78
손흥민 90
차범근 100

for문으로 zip을 활용해서 Print하는 부분을 dictionary comprehension으로 만들어보자

score_dic = {students : score for student, socre in zip(students, socores))
print(score_dic)
#output 
{'차범근' : 100, '메시': 92, '호날두' : 85, '박지성' : 78, '손흥민' : 90 }  
profile
알고리즘 풀이를 담은 블로그입니다.

0개의 댓글