본문 바로가기

카테고리 없음

4일차-2

리스트와 for 문

 

for문은 다양한 컬렉션(리스트, 튜플, 딕셔너리, 세트 등)과 함께 사용할 수 있습니다.

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

for i in li1:
    print(i, end=' ')

 

li1안에 있는 요소들을 하나씩 띄어서 나타내줘라 라는 뜻

apple banana orange melon

 

###문제 1
score 리스트에 저장된 점수가 60점 이상인 학생이 몇명인지 확인하는 프로그램을 작성해보자

*score = [90,30,50,60,80,70,100,40,20,10]
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}명입니다')

 

for문 짜기 전 위에서 점수가 있는 리스트를 나타내주고, 60점 이상이 몇 명인지 알려주는 변수를 지정해 놓고 코딩에 들어간다. 

 

딕셔너리와 for 문

 

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

for i in dic1: # 키만 복사해줌
  print(i,end=' ')
dic1 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

for i in dic1.keys():
  print(i,end=' ')
no userid name hp

코드를 저렇게 짜게 되면 키 값만 복사해준다.

 

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

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

값만 복사해 줌

 

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

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

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

dic1 [i]는 각 키에 해당하는 값을 나타냅니다.

dic1.get(i) 도 같은 뜻이다. 각 키에 해당하는 값을 나타내준다

 

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

for key,value in dic1.items():
  print(key,value)
no 1
userid apple
name 김사과
hp 010-1111-1111

 

. items()메서드는 딕셔너리에서 사용되는 메서드입니다.  메서드는 딕셔너리의 키와 값을 쌍으로 하는 튜플들을 반환합니다.

 

컴프리헨션(Comprehension)

 

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

n = 10

result = [0 for i in range(n)]
print(result)

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

 

첫 번째 결괏값은 for문 앞에 0 있기 어떤 게 오든 무조건 0이 된다.

반면에 두 번째는 for문 앞에 i가 있기 때문에  두번째 결괏값처럼 0~9까지의 값이 나온다

arr = [10,20,30,40,50,60,70,80,90,100]
result = [i for i in arr]
print(result)


arr = [10,20,30,40,50,60,70,80,90,100]
result = [i*2for i in arr]
print(result)
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
[20, 40, 60, 80, 100, 120, 140, 160, 180, 200]

첫 번째 나온 값에서 각각의 요소에 곱하기 2를 해준다는 뜻이다.

arr = ['apple', 'banana', 'orange','melon']
result = [len(str1) for str1 in arr]
print(result)
[5, 6, 6, 5]

arr라는 변수 안에 있는 문자열의 길이를 나타내달라는 뜻이다.

result = [n for n in range(10) if n%2==0]
print(result)
[0, 2, 4, 6, 8]

0~9까지 2로 나누었을 때 나머지가 0인 것들만 추출해달라는 뜻

arr = [-1, 0,-4, 24, 5, -10, 2, 20]
#양수는 리스트에 그대로 저장하고, 음수는 0으로 변환해서 저장
result=[n if n>0 else 0 for n in arr]
print(result)
[0, 0, 0, 24, 5, 0, 2, 20]
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) # 해석만 가능할수 있게
[1, 2, 2, 4, 3, 6]

. append()는 파이썬 리스트(list)에 사용되는 메서드(method) 중 하나입니다. 이 메서드는 리스트의 끝에 새로운 요소를 추가하는 데 사용됩니다.

append를 사용해 주었기 때문에 결과 저렇게 가로로 똑바로 나온다

두 개의 코딩다 똑같은 값이 나온다

 

세트 컴프리헨션

 

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

 

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

set 를적용하니 반복되는 요소들은 빼고 정리되어 나온다.

 

numbers = [1,2,3,4,5,2,3,4]
unique_numbers = {x for x in numbers}
print(unique_numbers)
{1, 2, 3, 4, 5}

 

딕셔너리 컴프리헨션

 

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

 

names = ["apple", "banana", "orange"]
name_lengths = {name:len(name) for name in names }
print(name_lengths)
{'apple': 5, 'banana': 6, 'orange': 6}