Python 기초

파이썬 기초(10)- 컬렉션과 반복문

두설날 2024. 3. 15. 17:33

*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*

1. 리스트 컬렉션과 for 문

for문에서 시퀀스로 리스트 컬렉션을 사용합니다.

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


for i in a:
    print(i,end=' ') #출력형태: 열방향

for문에 시퀀스로 리스트 컬렉션을 이용한 예제 

  • score 리스트에 저장된 점수가 60점 이상인 학생의 몇명인지 확인하는 프로그램을 작성해보자
  • score=[90,30,50,60,80,70,100,40,20,10]

60점 이상인 학생은 if조건문으로 나누어야한다. score변수는 리스트 컬렉션이므로 in연산자 뒤에 시퀀스 자리에 해당된다. 따라서, for문을 전체적인 어문으로 두르고, 안에 if문으로 조건을 걸어야 한다. 구하려는 60점 이상의 학생 수는 변수로 설정하여 구한다.

#문제1
score=[90,30,50,60,80,70,100,40,20,10]
count=0 #구하려는 학생수, 변수값 초기값으로 0 설정

for i in score:
    if i >=60:
        count+=1 #count=count+1, 구하려는 학생수 값
print(f'60점 이상 학생수: {count}명')

for문안의 i변수에 10~100까지 값이 들어갑니다. if조건문에서 60이 count변수에  해당되어 count값이 1로 바뀝니다. 해당과정이 끝나고 다시 for문으로 돌아갑니다. 이 방식으로 70,80,90,100이 count변수에 +1씩 합산되어 총 5의 값이 출력됩니다.

2. 딕셔너리와 for문

for문에서 시퀀스자리에 딕셔너리 자료형을 사용할 때, 키값과 value값을 여러 메서드를 사용해 출력할 수 있습니다.

  • .keys() : 키값 출력하는 메서드
  • .values() : value값 출력하는 메서드
  • .get() : get(키값)을 이용해 value값 출력하는 메서드
  • .items() : 튜플로 변환하는 메서드
#keys()
a={'one':1,'two':2, 'three':3,'four':4}

for i in a.keys():
    print(i)

#values()
a={'one':1,'two':2, 'three':3,'four':4}

for i in a.values():
    print(i)

#get()
a={'one':1,'two':2, 'three':3,'four':4}

for i in a:
    print(a.get(i))

#items()
a={'one':1,'two':2, 'three':3,'four':4}

for i,v in a.items():
    print(i,v)

인덱스로 출력하는 방법

#인덱스로 추출
a={'one':1,'two':2, 'three':3,'four':4}

for i in a:
    print(a[i])

3. 컴프리헨션

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

3-1. 리스트 컴프리헨션

#comprehension
n=10
a=[0 for i in range(n)] #range(n)=range(10)->0~9까지
print(a)
a=[i for i in range(n)]
print(a)
b=[i*2 for i in range(n)]
print(b)
ac=['apple','banana','orange','melon']
b=[len(str) for str in ac] #len()로 str인덱스값 출력
print(b)

해석순서는 중요하다

# in range()->if문->for문
a=[n for n in range(n) if n % 2 ==0]
print(a)

# for문 리스트형 중첩문
a=[]
for i in range(1,4):        #[1,2,3]
    for j in range(1,3):    #[1,2]
        a.append(i*j)       #[1,2,3] * [1,2]=1*1,1*2,2*1,2*2,3*1,3*2 출력
print(a)

3-2. 세트 컴프리헨션

세트 자료형은 중복 인덱스를 인정하지 않는다.

#set 컴프리헨션
n=[1,2,3,4,5,4,3,2,1]
nn=set(n)           
print(nn)

na={i for i in n} 
print(na)

3-3. 딕셔너리 컴프리헨션

#dictionary comprehension, 인덱스갯수
q=['ace','tuple','dictionary','comprehension']
q_length={i:len(i) for i in q}
print(q_length)