- List
- List - Comprehension
- if문 Comprehension
- for문, for문 중첩문 Comprehension
- Dictionary Comprehension
1. Comprehension
- 적용 전
areas = []
for i in range(1,11):
areas = areas + [i*i]
print("areas : ",areas)
- 적용 후
areas2 = [i*i for i in range(1,11)]
print("areas2 : ",areas2)
- ([1 * 1], [2 * 2] ... , [10 * 10])
- 이러한 방식을 List Comprehension이라고 한다.
#출력 결과
areas : [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
areas2 : [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2. If문 List Comprehension
- 적용 전
#일반적인 문장
areas = []
for i in range(1,11):
if i%2 == 0:
areas = areas + [i * i]
print("areas : ",areas)
- 적용 후
areas2 = [i*i for i in range(1,11) if i % 2 == 0]
print("areas2 : ",areas2)
- if 조건문을 만족하는 것만 for문 앞으로 넘겨준다.
- 출력 결과
areas : [4, 16, 36, 64, 100]
areas2 : [4, 16, 36, 64, 100]
3. for문 중첩 형태 List Comprehension
areas = [(x,y) for x in range(4) for y in range(3)]
print("areas : ", areas)
#출력 결과
areas : [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2)]
- y를 먼저 돌고나서 앞의 x 반복문을 돌게 된다.
4. 실습
- 1부터 100사이의 8의 배수를 가지도록 한다.
list1 = [i for i in range(1,101) if i% 8 == 0]
print("list1 : ", list1)
#출력 결과
list1 : [8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96]
5. Dictionary Comprehension
- 적용 전
students = ["태연","진우","정현","하늘","성진"]
for number, name in enumerate(students):
print("{}번의 이름은 {}입니다.".format(number,name))
- 적용 후
students_dict = {"{}번".format(number + 1): name for number, name in enumerate(students)}
print(students_dict)
- enumerate를 통해 숫자와 students의 name을 가져와 각각 number, name에 넣는다.
- for문을 도는데 그 앞의 number와 name에 들어가게 된다.
- 이후 쭉 반복하여 선언해준다.
- dictionary를 만든는 Compregension의 경우 ' [ ] ' 대신 ' { } '를 사용한다.
#출력 결과
0번의 이름은 태연입니다.
1번의 이름은 진우입니다.
2번의 이름은 정현입니다.
3번의 이름은 하늘입니다.
4번의 이름은 성진입니다.
{'1번': '태연', '2번': '진우', '3번': '정현', '4번': '하늘', '5번': '성진'}
6. Zip을 이용한 List, Dictionary Comprehension
- 두 개의 리스트를 Dictionary Comprehension으로 만들기
students = ["태연","진우","정현","하늘","성진"]
scores = [85,92,78,90,100]
score_dic = {student : score for student, score in zip(students,scores)}
print(score_dic)
- zip을 이용하여 students, scores 리스트를 하나로 묶는다.
- student(key), score(value)를 뽑아내고 반복문을 진행한다.
- 딕셔너리 이므로 { } 형태로 선언하고 student : score 형식으로 key와 value를 입력하여 변수에 저장한다.
#출력 도구
{'태연': 85, '진우': 92, '정현': 78, '하늘': 90, '성진': 100}
7. 실습
- 각각 두 개의 리스트를 하나의 딕셔너리 형태로 묶기
product_list = ["풀", "가위", "크래파스"]
price_list = [800, 2500, 5000]
product_dict = { product : price for product, price in zip(product_list,price_list)}
print(product_dict)
#출력 결과
{'풀': 800, '가위': 2500, '크래파스': 5000}
'Web Development > Python' 카테고리의 다른 글
(Python) Datetime 날짜 타입 (0) | 2022.10.13 |
---|---|
(Python) 오버라이드 (0) | 2022.10.13 |
(Python) 상속 (0) | 2022.10.13 |
(Python)Class 만들기와 함수, 특수한 메소드 (0) | 2022.10.13 |