본문 바로가기
C++ 200제/코딩 IT 정보

파이썬 컴프리헨션 예제 8개for if dict zip map

by vicddory 2019. 6. 1.

파이썬 문법 중 정말 멋진 컴프리헨션(Comprehensions) 예제 8개입니다. 컴프리헨션에 대해선 아래 링크 2개 글을 읽어주시고 이 포스트에선 다양한 예제 확인하시면 됩니다.


Python Comprehensions


이론적인 부분은 위 파이썬 글 2개 참조해 주시고, 예제 소개 시작합니다.

1. 컴프리헨션 + for 반복문

1
2
3
4
5
6
7
8
9
e1 = [i   for i in range(10)]
e2 = [i*for i in range(10)]
e3 = [i   for i in range(len(e1)-1,-1,-1)]
e4 = [i   for i in reversed(e1)]
 
print(e1)
print(e2)
print(e3)
print(e4)
cs


■ 결과




2. 홀수 리스트 생성

1
2
print([i for i in range(1,20,2)])
print([i for i in range(20if i%2 == 1])
cs


■ 결과



range 영역에 인자로 설정할 수 있지만, 2번 라인처럼 if문을 활용할 수도 있습니다.



3. 리스트에서 홀수만 추출

1
2
3
4
f1 = [i for i in range(20)]
f2 = [i for i in f1 if i%2 == 1]
 
print(f2)
cs


■ 결과



파이썬 컴프리헨션 활용하는 조건에 if 문을 추가하여 f1 리스트에서 홀수만 추출합니다.


4. 파이썬 컴프리헨션 + 랜덤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import random
 
random.seed(1)
g1 = [random.randrange(100for i in range(10)]
g2 = [random.randrange(100for i in range(10)]
g3 = [random.randrange(100for i in range(10)]
 
= [g1, g2, g3]
 
print(h)
 
for i in h:
    for j in i:
        print(j, end=' ')
    print()
 
 
def isExist(numbers, v):
    for i in numbers:
        if i == v:
            return True
 
    return False
 
def includes(ns, v):
    for i in ns:
        # if isExist(i, v) == True:
        if v in i:
            return True
 
    return False
 
print(includes(h, 83))
cs


■ 결과



랜덤을 활용해 리스트 3개를 생성합니다.

10번 라인, 14번 라인 통해서 리스트 데이터를 모두 출력합니다.

33번 라인에서 includes 함수를 호출하여 83 값이 있는지 확인합니다. 18번 라인은 써도 되고 안 써도 됩니다.



5. Comprehension 다양한 Print 출력 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import random
 
random.seed(1)
g1 = [random.randrange(100for i in range(10)]
g2 = [random.randrange(100for i in range(10)]
g3 = [random.randrange(100for i in range(10)]
 
= [g1, g2, g3]
 
= h
 
print([item for item in k])
print([[i for i in item] for item in k])
print([[i for i in item if i%2 == 1for item in k])
 
print([j for i in k for j in i])
print([j for i in k for j in i if j%2 == 1])
cs


■ 결과



12, 13번 라인은 리스트 전체 출력입니다.

14번 라인은 홀수만 출력합니다.

16번 라인, 컴프리헨션은 조건이 늘어날수록 코드 분석하기 어렵습니다. 16번 라인처럼 조건 2개는 괜찮지만 10개 20개 넣는 건 하지 마세요. 리스트에서 읽은 인자를 개별 정수로 2번째 조건문에 넣어 출력합니다.


17번 라인, 16번 라인은 모두 출력이지만 여기선 홀수 출력입니다.


6. 파이썬 컴프리헨션 + zip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import random
 
random.seed(1)
g1 = [random.randrange(100for i in range(10)]
g2 = [random.randrange(100for i in range(10)]
g3 = [random.randrange(100for i in range(10)]
 
print([ g1[i]+g2[i]+g3[i]  for i in range(len(g1))])
print([(g1[i],g2[i],g3[i]) for i in range(len(g1))])
 
print(type(zip(g1,g2,g3)))
print(list(zip(g1,g2,g3)))
 
print([(g1[i],g2[i]) for i in range(len(g1))])
print(dict([(g1[i],g2[i]) for i in range(len(g1))]))
print(dict(zip(g1,g2)))
cs


■ 결과



zip, dict 활용해 요소를 한데 묶어 처리합니다. 전체 출력 소스는 5번 예제와 유사합니다.



7. 딕셔너리 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
= dict(color='red', price=100, name='pen')
 
print([k for k in m])                   # list
print({i for i in m.items()})           # set
print({(k,v) for k, v in m.items()})    # set
print({(v,k) for k, v in m.items()})    # set
 
print({k:v for k, v in m.items()})
print({v:k for k, v in m.items()})
 
print(dict({i for i in m.items()}))
print(dict({(k,v) for k, v in m.items()}))
print(dict({(v,k) for k, v in m.items()}))
 
print({k:v for k, v in m.items() if type(v) == int})
cs


■ 결과



6번 예제처럼 다양한 출력 방법을 소개합니다. 결과는 유사하나 방법은 다양합니다.



8. 딕셔너리 zip map 출력 Print 방법

1
2
3
4
5
= dict(color='red', price=100, name='pen')
 
print(dict(zip(m.keys(), m.values())))
print(dict(zip(m.values(), m.keys())))
print(dict(map(reversed, m.items())))
cs


■ 결과



Python 컴프리헨션 7번 예제처럼 다양한 출력 방식을 소개합니다.



관련 글


파이썬 print 재귀함수, 반복 출력, 문자열 거꾸로 뒤집기


파이썬 정렬 sort sorted reverse=true 예제 4개


파이썬 정렬 소스, 숫자 문자열 예제 6개 sorted join



ⓒ written by vicddory

댓글