'comprehension'에 해당하는 글 1건

v = [x for x in iterable if x]
cs


list 안에다가 for 문을 때려박는 요상한 문법을 보았다. 대충봐도 for 문을 이용해 list 안에 요소를 넣는다는 것은 알겠는데 굳이? 아무래도 한줄에 쓰여 있으니 간략해 보이기도 하지만 제어문이 길어질 경우 가독성은 어째? 간단할 때 쓰면, 아니 복잡하더라도 익숙해지면 나쁘지 않을 것 같다.


저것을 풀어보려니,


v = []
for x in iterable:
    if x:
        v.append(x)
cs


맞나? 이렇게 보니 왠지 한 줄로 써야할 것 같다.



Comprehension


이렇게 list(), dictionary[], set{} 의 요소 자리에 반복문이나 조건문을 사용하여 iterable 한 객체를 생성하는 기능을 Comprehension 이라 한다.

  • List Comprehension (LC)
  • Dict Comprehension (DC)
  • Set Comprehension (SC)


iterable 이란 반복 가능한 자료형을 말하며 collections.Iterable 에 속한 instance 로,

list, tuple, dictionary, set, range bytes, str 등이 있다.


[x * 2 for x in iterable if x] 대충 이러한 형식에서,


첫번재 x 가 요소로 들어갈 변수자리이며 바로 각종 연산이 가능하다.

그 뒤에 for 문과 if/else 문을 중첩으로 사용하여 조금 복잡한 연산도 가능하지만... 그냥 복잡해 보이기만 함 ㅋㅋ


예를 들면 요롷게 긴~


[(x, y, z) for x in range(1, 30) for y in range(x, 30) for z in range(y, 30) if x**2 + y**2 == z**2]




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,