728x90

Java 문법에 없는 독특한 문법인가보다

 

리스트 표현식

[ ( 변수를 활용한 값 ) for 변수 in 리스트 ]

※ 리스트 대신 입력 시퀀스 라고 하기도 한다.

# list comprehension
array = []
for i in range(0,20,2):
    array.append(i * i)

print(array)

# 위의 코드 3줄을 아래 한줄로 대체할 수 있다.
array =[i * i for i in range(0,20,2)]
print(array)

 

리스트 표현식에서 if 조건문 사용하기

#예제 1
a = [i for i in range(10) if i % 2 == 0] 
print(a)

#예제 2
oldlist = [1, 2, 'A', False, 3]
newlist = [i*i for i in oldlist if type(i)==int]
print(newlist)
# 출력: [1, 4, 9]

 

Set Comprehension

Set Comprehension은 입력 Sequence로부터 지정된 표현식에 따라 새로운 Set 컬렉션을 빌드하는 것으로, 아래와 같은 문법을 갖는다. List Comprehension과 거의 비슷하지만, 결과가 Set {...}으로 리턴된다는 점이 다르다.

Set은 요소의 순서를 보장하지 않으므로, 순서가 랜덤하게 바뀐 결과를 출력하게 된다.

oldlist = [1, 1, 2, 3, 3, 4]
newlist = {i*i for i in oldlist}
print(newlist)
# 출력 : {16, 1, 4, 9}

 

1 ~ 100 사이에 있는 숫자 중 2진수로 변환했을 때 0이 하나만 포함된 숫자를 찾고, 그 숫자들의 합을 구하는 코드를 만드세요.

output = 0
for i in range(1,101):
    if "{:b}".format(i).count("0") == 1:
        print("{} : {:b}".format(i,i))
        output += i
print("합계 : {}".format(output))

위 코드로 구현할 것을 list comprehension 으로 변경해보자.

output = [i for i in range(1,101) if "{:b}".format(i).count("0") == 1]
# print(output)
for i in output:
    print("{} : {}".format(i, "{:b}".format(i)))
print("합계 : {}".format(sum(output)))
블로그 이미지

Link2Me

,