본문 바로가기
Python/개념

Day 5-1. 컬렉션과 반복문

by 사라리24 2024. 3. 15.
SMALL

 

1. 리스트와 for 문

 

 

 
  li1 = ['apple', 'banana', 'orange', 'melon']
 
  for i in li1:
    print(i, end=' ')
 
apple banana orange melon 

 

 
  # score 리스트에 저장된 점수가 60점 이상인 학생이 몇명인지 확인
 
  score = [90, 30, 50, 60, 80, 70, 100, 40, 20, 10]
  count = 0
  
  for i in score:
      if i >= 60:
          count += 1

  print(f'60점 이상인 학생의 수는 {count}명입니다')
 
60점 이상인 학생의 수는 5명입니다

 

 


 

2. 딕셔너리와 for 문

 

 

 
  dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

  for i in dic1:
      print(i, end=' ') # 키만 복사

  for i in dic1.keys():
      print(i, end=' ') # 키만 복사
 
 
no userid name hp 
no userid name hp 

ㄴ 기본적으로 딕셔너리의 key값이 i 에 대입되서 출력됩니다.

ㄴkey( ) 함수로도 키를 불러올 수 있습니다.

 

 
  dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
 
 
  for i in dic1.values():
      print(i, end=' ') # 값만 복사
 
  for i in dic1:
      print(dic1[i], end=' ') # 값만 복사

  for i in dic1:
      print(dic1.get(i), end=' ')  # 값만 복사
 
 
1 apple 김사과 010-1111-1111 
1 apple 김사과 010-1111-1111 
1 apple 김사과 010-1111-1111 

ㄴ 딕셔너리의 vaule 값 뽑기 위해서는

value( ), get( ) 함수를 사용하거나,

dic1[i]으로 호출합니다.

 

 

 
 
  dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
  for key, value in dic1:
      print(key, ":", value)
 

 

오류

ㄴdic1 에서 키값만 나오기 때문에 key, vaule로 나눌 수 없습니다.

 

 
  person = {'name': '김사과', 'age': 20, 'city': '서울'}
  for key, value in person.items():
      print(key, ":", value)
 
name : 김사과
age : 20
city : 서울

 

.items() 메서드는 딕셔너리에서 사용되는 메서드입니다. 

이 메서드는 딕셔너리의 키와 값을 쌍으로 하는 튜플들을 반환합니다. 

일반적으로 이 메서드는 딕셔너리의 키와 값을 동시에 반복(iterate)하고자 할 때 사용됩니다.


 

3. 컴프리헨션(Comprehension)

컴프리헨션(Comprehension)은 for문으로 리스트세트딕셔너리 등의 컬렉션을 생성하거나 변형하는 방법입니다. 컴프리헨션은 반복문과 조건문을 사용하여 간결하게 컬렉션을 생성하는 기법으로코드를  간단하고 가독성 좋게 작성할  있도록 도와줍니다. 

1. 리스트 컴프리헨션

리스트 컴프리헨션은 새로운 리스트를 생성하는데 사용됩니다. 
기존 리스트의 각 요소를 반복하면서 조건을 적용하여 새로운 리스트를 생성합니다.

 a = [ j for i in range(n) ] 

* 0~n 만큼의 수를
* i에 넣고
* j를 출력 

 

 

 
  n = 10

  result = [0 for i in range(n)]  # n = 0~9 (10되기 전까지)
                                                          # i 에 넣기
                                                          # 0으로 출력
  print(result)
 

  result = [i for i in range(n)]  # n = 0~9 (10되기 전까지)
                                                         # i 에로 넣기
                                                         # i 로 출력
  print(result)


[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

 - 컴프리헨션 + list 문 (1)

  
  arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  result = [n for n in arr] # n = arr에서 하나씩 뽑아서
                                               # n 로 넣기
                                               # n 으로 출력
  print(result)

  result = [n*n for n in arr# n = arr에서 하나씩 뽑아서
                                                    # n 로 넣기
                                                    # n*n으로 출력
  print(result)
 


 

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

 

 - 컴프리헨션 + list 문 (2)

 
 
  arr = ['apple', 'banana', 'orange', 'melon']

  result = [len(string) for string in arr]   # n = arr에서 하나씩 뽑아서
                                                                             # string에 넣기
                                                                             # string의 길이로 출력
  print(result)
 
 
[5, 6, 6, 5]

 

 - 컴프리헨션 + if 문 (1)

 
  result = [n for n in range(10) if n%2 == 0]
  print(result)
 
  # if 짝수라면
  # 0-9 
  # n에 넣기
  # n을 출력
 
[0, 2, 4, 6, 8]

 

- 컴프리헨션 + if 문 (2)

 
 
  # 양수는 리스트에 그대로 저장하고, 음수는 0으로 변환해서 저장하기
 
  arr = [-1, 0, -4, 24, 5, -10, 2]

  result = [n if n>0 else 0 for n in arr]
  print(result)
 
  # if 양수면 n 출력
  # if 음수면
      # arr에서 하나씩 뽑아서
      # n에 넣기
      # 0으로 출력
 
[0, 0, 0, 24, 5, 0, 2]

 

- 컴프리헨션 + 이중 for문

 
  arr = [ ]

  for i in range(1, 4):
      for j in range(1, 3):
          arr.append(i * j)
  print(arr)
 
--------------------------------------------------------------------------------------------------------------------

  arr = [i*j for i in range(1, 4) for j in range(1, 3)]
  print(arr)
 
      # i 1-3 (3바퀴)
      # j 1-2 (2바퀴)
      # 1 * 1 / 1 * 2
         2 * 1 / 2 * 2
         3 * 1 / 3 * 2
 

 

[1, 2, 2, 4, 3, 6]
[1, 2, 2, 4, 3, 6]

ㄴ두가지 다 동일한 결과가 나옵니다.

 

 

 

2. 세트 컴프리헨션

세트 컴프리헨션은 새로운 세트를 생성하는데 사용됩니다. 
기존 세트의 각 요소를 반복하면서 조건을 적용하여 새로운 세트를 생성합니다.

 

 
 
  numbers = [1, 2, 3, 4, 5, 2, 3, 4]
  unique_numbers = set(numbers)
  print(unique_numbers)

  numbers = [1, 2, 3, 4, 5, 2, 3, 4]
  unique_numbers = {x for x in numbers# 중괄호로 만들어야 Set로 생성
  print(unique_numbers)
 


{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}

 

 

3. 딕셔너리 컴프리헨션

딕셔너리 컴프리헨션은 새로운 딕셔너리를 생성하는데 사용됩니다. 
기존 딕셔너리의 키와 값을 반복하면서 조건을 적용하여 새로운 딕셔너리를 생성합니다.

 

 
  names = ["apple", "banana", "orange"]
  name_lengths = {name: len(name) for name in names}   # key : value 형태로 for문에 입력 
  print(name_lengths)
 
  # name 뽑기
  # name에 넣기
  # <name:길이> 로 두가지로 뽑아서 딕셔너리 만들기
 
{'apple': 5, 'banana': 6, 'orange': 6}

 

'Python > 개념' 카테고리의 다른 글

Day 6-1. 변수의 범위  (0) 2024.03.15
Day 5-2. 사용자 정의 함수  (0) 2024.03.15
Day 4-5. 제어문 - 반복문  (0) 2024.03.14
Day 4-4. 제어문 - 조건문  (0) 2024.03.14
Day 4-3. 파이썬 연산자  (0) 2024.03.14