본문 바로가기
Programming/python

[Python] 내장 순차 자료형 함수

by 유주원 2015. 3. 3.

enumerate

파이썬에서 foreach를 사용할 경우 각 리스트의 값이 순차적으로 루프된다.

만약에 foreach 문에 index를 추가로 확인하고 싶다면 count 변수를 추가로 선언하여 1씩 증가해야 하는 불편함이 있다.


collection = [10, 9, 8, 7, 6, 5]

index = 0

for i in collection:

   index += 1    


enumerate는 해당 collection의 값 뿐만 아니라 index도 함께 리턴한다.


for index, value in enumerate(collection):

    # 처리   


enumerate를 이용한 아래의 사용도 가능해진다.


collection = ['apple', 'banana', 'pineapple']

fruit_dict = dict((value, index) for index, value in enumerate(collection))     # {'apple': 0, 'banana':1, 'pineapple':2}


sorted

입력된 파라미터를 정렬하여 새로운 객체를 반환한다.


collection = [7,3,5,2,6,1,4]

sorted(collection)                 # [1,2,3,4,5,6,7]


sorted라는 파이썬 내장 함수와 list 객체 내의 sort 함수가 있는데 이 둘의 차이점은 sorted는 정렬된 새로운 객체를 생성하는데 

반해, list.sort() 함수는 해당 리스트 자체의 순서를 바꾸는 차이가 있다.


collection = [3,1,2]

collection.sort()                 # [1,2,3]

sorted_collection = sorted(collection)         # sorted_collection = [1,2,3]   collection = [3,1,2]


set을 이용하여 중복을 제거한 후 sorting 할 수도 있다.


sorted(set('hello world'))             # [' ', 'd', 'e', 'h', 'l', 'o', 'r', 'w']


zip

여러 개의 리스트를 튜플로 묶어주는 역할을 한다.


list1 = ['one', 'two', 'three']

list2 = ['apple', 'banana', pineapple']


zip(list1, list2)                    # [('one', 'apple'), ('two', 'banana'), ('three', 'pineapple')]


리스트의 개수가 같지 않을 경우에는 가장 짧을 리스트를 기준으로 튜플을 생성한다.


list1 = ['one', 'two', 'three']

list2 = ['apple', 'banana', pineapple']

list3 = ['true', 'false']


zip(list1, list2, list3)                    # [('one', 'apple', 'true'), ('two', 'banana','false')]


생성된 zip을 다시 분해할 수도 있다.


zip_list = [('one','apple'), ('two','banana')]


index, fruit = zip(*zip_list)


reversed

입력 파라미터를 역순으로 변경하는 기능을 한다.


list(resersed(range(10)))          # [9,8,7,6,5,4,3,2,1,0]