본문 바로가기
  • hello world
Language/Python

[Python] 제어문 (컴프리핸션 Comprehension) + all · any 함수

by JJoajjoa 2023. 8. 18.

 

간단하게 반복하는 한줄 for 문

 

컴프리핸션 Comprehension

- 내포 혹은 내장 이라는 뜻

- 리스트, 세트, 딕셔너리 내에서 실행 가능

- 많이 사용하는 것은 리스트 컴프리핸션

 

[식 for 변수 in 리스트]

[반복실행문 for 반복변수 in 반복범위]

 

[반복실행문 for 반복변수 in 반복범위 if 조건문]

→ 반복문을 실행하다가 <if 조건문>을 만족하는 경우에만 <반복실행문>을 실행

a = [ i for i in range(10) ]
print(a)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

a = [ i for i in range(10) if i % 2 == 0 ]
print(a)
# [0, 2, 4, 6, 8]

lst = [ i * 0 for i in range(10)]
print(lst)
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

a = [ i * j for i in range(1, 4) for j in range(2, 5) ]
print(a)
# [2, 3, 4, 4, 6, 8, 6, 9, 12]

 

 


 

 

실습 1

word = ["school", "game", "piano", "science", "hotel", "mountain"]

lst1 = [ i for i in word if len(i) >= 6 ]
print(lst1)
# ['school', 'science', 'mountain']

lst2 = [len(i) for i in word]
print(lst2)
# [6, 4, 5, 7, 5, 8]

 

 

실습 2

a = [ [10,20], [30,40], [50,60] ]
b = [  [2,3],   [4,5],    [6,7] ]
lst = []
lstN = []

for i in range(len(a)):
    for j in range(len(a[i])):
        x = a[i][j] * b[i][j]
        lst.append(x)
    lstN.append(lst)
    lst = []
    
print(lstN)
# [[20, 60], [120, 200], [300, 420]]

 

 

실습 3

a = [[i+1 for i in range(3)] for j in range(3)]
print(a)
# [[1, 2, 3], [1, 2, 3], [1, 2, 3]]

b = [[j*10 +i +1 for i in range(3)] for j in range(3)]
print(b)
# [[1, 2, 3], [11, 12, 13], [21, 22, 23]]

c = [[i+1 for i in range(2)] for j in range(3)]
print(c)
# [[1, 2], [1, 2], [1, 2]]

d = [[j*2 +i +1 for i in range(2)] for j in range(3)]
print(d)
# [[1, 2], [3, 4], [5, 6]]

 

 

실습 4

### 2차원배열 3*3에 0으로 채워보자
a = [[0 for i in range(3)] for _ in range(3)]
print(a)
# [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

 

 

실습 5

### 50 이하의 소수로 이루어진 1차원 리스트

# 먼저 반복문 사용해서 채워보기
lst = []
for i in range(2, 51) : # 1~50까지중에
    for j in range(2, i) : # j는 약수를 찾는 임무 수행
        if (i % j == 0) :
            break
        # else: #반복문이 끝났을 때: j가 i까지 도착 했을 때
        #     print(i, end=" ")
        elif (i - 1 == j) :
            lst.append(i)
print(lst)
# [3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

# 리스트 컴프리헨션 사용해보기
prime_number = [ i for i in range(2, 51) if all(i % j != 0 for j in range(2, i)) ]
print(prime_number)
# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

 

all 함수, any 함수

여러개의 조건 or 값이 있는 리스트, 튜플, set ... 값의 조건에 따라 T or F 값을 리턴하는 함수
# all 함수 : 모든값이 T 일 때 T
# any 함수 : 하나라도 T면 T

number = [i + 1 for i in range(10)] # 1 ~ 10
lst = [x for x in number if x % 2 == 0] # 1 ~ 10 중 짝수

# all함수
res = all(x % 2 == 0 for x in number)
print(res) #F
res = all(x % 2 == 0 for x in lst)
print(res) #T

# any함수
res = any(x == 5 for x in number)
print(res) #T
res = any(x == 5 for x in lst)
print(res) #F