간단하게 반복하는 한줄 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
'Language > Python' 카테고리의 다른 글
[Python] 데코레이터(decorator) · 래퍼함수 · 일급객체 · 클로저(closure) (0) | 2023.08.23 |
---|---|
[Python] 람다 표현식 Lambda Expression (0) | 2023.08.21 |
[Python] 리스트(list) · 튜플(tuple) · range함수 · 슬라이스(slice) · 세트(set) · 딕셔너리(dictionary) (0) | 2023.08.16 |
[Python] 문자열 · 서식지정자 · format함수 (0) | 2023.08.16 |
[Python] 파이썬 설치 · 학습 일정 정리 (0) | 2023.08.16 |