인공지능/파이썬

컬렉션과 반복문

mino28 2025. 7. 8. 00:31

1. 이터러블과 이터레이터

1. 이터러블(iterable)

이터러블은 for문처럼 반복문에서 사용할 수 있는 모든 객체를 의미합니다. 이터러블한 객체는 for item in 객체: 구조에서 사용 가능합니다. 모든 순서 있는 컬렉션은 이터러블입니다. 하지만 모든 이터러블이 순서 있는 것은 아닙니다. (set, dict.keys()는 반복은 되지만 인덱스가 없음)

 

2. 이터레이터(Iterator)

이터러블 객체는 iter() 함수를 사용해서 이터레이터로 바꿀 수 있습니다. 또한 next()를 사용해서 값을 하나씩 꺼낼 수 있습니다.

 

이터러블 iter()를 적용할 수 있는 객체 리스트, 튜플, 문자열 등
이터레이터 next()로 값을 꺼낼 수 있는 객체 iter(리스트)로 만든 것

 

numbers = [10, 20, 30]
# 이터러블 -> 이터레이터로 변환
iterator = iter(numbers)

# next()로 값을 하나씩 꺼냄
print(next(iterator))
print(next(iterator))
print(next(iterator))
# print(next(iterator)) # → 여기서 더 꺼내면 StopIteration 예외 발생

 

2. 리스트와 for 문

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

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

 

# 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}명입니다')

 

# 리스트에서 길이가 5 이상인 문자열만 출력
words = ["apple", "hi", "banana", "go", "mango"]

for word in words:
    if (length := len(word)) >= 5:
        print(f"{word} (길이: {length})")

 

3. 딕셔너리와 for 문

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

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

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

print()

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

print()

for i in dic1:
    print(dic1[i], end=' ')

print()

for i in dic1:
    print(dic1.get(i), end=' ')

print()

for i in dic1.items():
    print(i)

for key, value in dic1.items():
    print(key, value)

 

 

4. 컴프리헨션(Comprehension)

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

 

1. 리스트 컴프리헨션

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

n = 10

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

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

 

li = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

result = [n for n in li]
print(result)

result = [n*2 for n in li]
print(result)

 

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

result = [len(str1) for str1 in li]
print(result)

 

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

 

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

result = [n if n>0 else 0 for n in li]
print(result)

 

li = []

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

li = [i*j for i in range(1, 4) for j in range(1, 3)]
print(li)

 

2. 세트 컴프리헨션

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

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

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

 

3. 딕셔너리 컴프리헨션

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

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

'인공지능 > 파이썬' 카테고리의 다른 글

변수의 범위  (0) 2025.07.08
사용자 정의 함수  (0) 2025.07.08
제어문 - 반복문  (3) 2025.07.08
제어문 - 조건문  (1) 2025.07.08
input 함수  (0) 2025.07.08