TIL12: code kata- day2

Seoyul Kim·2020년 4월 7일
0

Algorithm

목록 보기
4/4

1. Iterable & Iterator

Iterable

  • 반복 가능한 객체
  • member를 하나씩 차례로 반환 가능한 object
>> import collections

# iterable 한 타입
>>> var_list = [1, 3, 5, 7]
>>> isinstance(var_list, collections.Iterable)
True
>>> var_dict = {"a": 1, "b":1}
>>> isinstance(var_dict, collections.Iterable)
True
>>> var_set = {1, 3}
>>> isinstance(var_set, collections.Iterable)
True
>>> var_str = "abc"
>>> isinstance(var_str, collections.Iterable)
True
>>> var_bytes = b'abcdef'
>>> isinstance(var_bytes, collections.Iterable)
True
>>> var_tuple = (1, 3, 5, 7)
>>> isinstance(var_tuple, collections.Iterable)
True
>>> var_range = range(0,5)
>>> isinstance(var_range, collections.Iterable)
True

# iterable하지 않은 타입
>>> var_int = 932
>>> isinstance(var_int, collections.Iterable)
False
>>> var_float = 10.2
>>> isinstance(var_float, collections.Iterable)
False
>>> var_none = None
>>> isinstance(var_none, collections.Iterable)
False

Iterator

  • 값을 차례대로 꺼낼 수 있는 객체
  • Iterator는 Iterable한 객체를 내장함수 또는 Iterable 객체의 메소드로 객체를 생성할 수 있다.
  • Iterable한 object라고 해서 반드시 Iterator를 아니다.
  • Iterable을 Iterator로 변환하고 싶다면 iter()라는 built-in function을 사용한다.

2. for문에서 range

  • range는 range(시작숫자, 종료숫자, step)의 형태로 리스트 슬라이싱과 유사하다.
  • range의 결과는 시작숫자부터 종류숫자 바로 앞 숫자까지 컬렉션을 만든다.
  • 시작 숫자와 step은 생략 가능하다.
>>> for i in range(5):
...     print(i)
... 
0
1
2
3
4

3. sort, sorted & reverse, reversed

sort

  • 리스트 자료형의 함수, 리스트 요소를 정렬
lst = [ i for i in [5,4,3,2,1]]
lst.sort()
print(lst)

------------------------------

[1, 2, 3, 4, 5]

2. reverse

  • 리스트 자료형의 함수, 리스트 요소를 역순으로 정렬
lst = [ i for i in range(5)]
lst.reverse()
print(lst)

------------------------------

[4, 3, 2, 1, 0]

3. sorted

  • Iterator의 요소를 정렬하여 리턴하지만 원본은 변경하지 않는다.(파이썬 내장함수)
lst = [ i for i in [5,4,3,2,1]]
print(list(sorted(lst))) # sorted
print(lst) # original
------------------------------
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]

4. reversed

  • Iterator의 요소를 역순으로 리턴하지만 원본은 변경하지 않는다.(파이썬 내장함수)
lst = [ i for i in range(5)]
print(list(reversed(lst))) # reversed
print(lst) # original
--------------------------------------------
[4, 3, 2, 1, 0]
[0, 1, 2, 3, 4]

4. list indexing & slicing

Indexing

>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]
>>> a[2][2][0]
'Life'

Slicing

  • 연속적인 객체들에 범위를 지정해 선택해서 객체들을 가져오는 방법
    a[start:end:step]
  • end는 슬라이싱을 끝낼 위치고 end는 포함되지 않는다.
  • step이 양수일 경우 오른쪽으로 step만틈 이동하면서 가져온다.
  • step이 음수일 경우 왼쪽으로 step만큼 이동하면서 가져온다.
>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]
>>> a[2:5]
[3, ['a', 'b', 'c'], 4]
>>> a[3][:2]
['a', 'b']

0개의 댓글