Python Iterable

john·2022년 2월 24일
1

초기질문

  • Iterable이란 무엇인가? (정의)
  • iterator란 무엇인가? (정의)
  • Comprehension란 무엇인가? (정의)
    • 어떤 Comprehension들을 사용 할 수있는가?

iterable이란 무엇인가?

iterable 의 의미는 member를 하나씩 차례로 반환 가능한 object를 의미

iterable 예로는 sequence type을 가지는 list, str, tuple 대표적인 예이다.

sequence type이란?

데이터에 순서(번호)를 붙여 나열한 것


시퀀스 컬렉션의 종류

리스트(list), 튜플(tuple), 레인지(range), 문자열(string) 등이 여러 가지 시퀀스 컬렉션을 제공

시퀀스에서의 데이터 순서

💡 가변 데이터와 불변 데이터

데이터 유형은 내용의 수정이 허용되는 것과 금지되는 것으로도 분류가 된다.

리스트는 값을 변경할 수 있는 가변(mutable) 데이터다.  number_list[2] = '-3'처럼 내용을 수정하는 연산이 가능하다.

반면, 값을 변경할 수 없는 불변(immutable) 데이터도 있다. 불변 데이터에는 수, 튜플, 문자열 등이 있다. number = 10을 저장한 후 number += 1을 실행하면 number의 값은 11로 변한다. 하지만 number가 가리키는 값이 바뀌었을 뿐, 10이 11이 된 것은 아니다.

💡 non-sequence type 인 dict 나 file 도 iterable 하다고 할 수 있음

iterator란 무엇인가?

Iterator 는 next() 메소드로 데이터를 순차적으로 호출 가능한 object

💡 next()로 다음 데이터를 불러올 수 없을 경우 StopIteration exception 발생

iterable ≠ iterator

x = [1,2,3]
next(x)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: list object is not an iterator

list 는 iterable 이지만, 위와 같이 next() 메소드로 호출해도 동작하지 않음.

💡 iterable 을 iterator 로 변환하고 싶다면, iter() 라는 built-in function 을 사용함.

Iterable보다 Iterator를 사용하는 편이 메모리 효율이 더 좋음

Comprehension이란 무엇인가?

comprehension의 사전적 의미

for문을 활용한 list comprehension

[i for i in range(5)]

List Comprehension의 기본 구조

단일 if 문을 포함한 List Comprehension

[i for i in range(5) if i % 2 == 0]

2로 나눈 나머지가 1이면 해당 i를 리스트에 생성하라는 의미

⇒ [0, 2, 4]

if와 else문을 포함한 List Comprehension

[i if i % 2 == 0 else None for i in range(5) ]

⇒ [0, None, 2, None, 4]

중첩 for문을 포함한 List Comprehension

[i*j for i in range(1,6) for j in range(7,10)]

for 문 뒤에 for 문을 계속 쓰는 경우 앞의 for 문의 원소에 대해서 그 다음 for 문의 원소를 순차적으로 적용한 결과

Dictionary Comprehension (딕셔너리 내포))

profile
developer

0개의 댓글