프로그래밍 언어발행일 2023. 2. 17.원본 https://blog.naver.com/jword_/223019341362 ↗

파이썬 enumerate, zip, reversed, sorted (루프테크닉)

파이썬 enumerate, zip, reversed, sorted (루프테크닉) — #파이썬enumerate #파이썬zip #파이썬reversed #파이썬sorted #파이썬루프테크닉 AI스쿨 msa기반 java 백...

#Languages#Naver Blog

#파이썬enumerate #파이썬zip #파이썬reversed #파이썬sorted #파이썬루프테크닉

​

AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다

파이썬 루프테크닉

이미지

자료구조에 대한 공부가 거의 끝이 났습니다. 이제 루프(for)안에서 딕셔너리, 시퀀스 자료구조를 어떻게 응용 할 수 있는지에 대한 내용이 남아있습니다.

​

이글에서 등장하는 메서드는 자료구조를 훨씬 더 잘 활용할 수 있는 방안을 제시합니다.

items()

딕셔너리 key : value 쌍을 활용하자

items() 메서드를 활용하여 딕셔너리 자료구조를 훨씬 쉽게 응용할 수 있습니다.

dict = { 'name' : 'jword', 'age' : 15, 'isFemale': False }for k,v in dict.items(): print(k, v)
name jwordage 15isFemale False

dic 딕셔너리 자료를 items()를 사용하여 key : value값을 추출하였습니다. key : value쌍이 바로 옆으로 출력됩니다.

enumerate()

시퀀스 자료형 순서를 출력하자

시퀀스 자료형은 요소들의 순서를 부여하여 순서로 접근이나, 출력, 수정이 가능했습니다. 그만큼 시퀀스에서는 순서가 중요한 역할을 한다고도 볼 수 있습니다.

​

enumerate() 메서드는 시퀀스의 순서와 데이터요소 쌍을 출력합니다.

fruits = \['apple', 'banana', 'mango'\]for i, s in enumerate(fruits): print((i, s))
(0, 'apple')(1, 'banana')(2, 'mango')

()는 제가 임의로 추가한 형식입니다. 보통은 () 없이 0, 'apple'로 출력됩니다.

​

시퀀스 데이터는 다 가능하기 때문에 튜플 형태도 출력해보았습니다.

tup = 'apple', 13, fruitsfor i, s in enumerate(tup): print(i, s)
0 apple1 132 \['apple', 'banana', 'mango'\]

역시나 잘 출력되는것을 확인할 수 있었습니다.

​

마지막으로 문자열도 시퀀스기에 테스트 해보았습니다.

for i, s in enumerate('apple'): print(i, s)
0 a1 p2 p3 l4 e

역시나 시퀀스대로 잘 분류가 되는군요!

zip()

두가지 이상 시퀀스를 활용하기

두가지 이상 시퀀스 데이터가 필요한 경우가 있습니다. 이럴때는 zip() 메서드를 사용하여, 각 시퀀스를 각각의 변수로 바을 수 있습니다.

​

tup1 튜플 데이터를 추가로 만들고, 위 예시에서 활용한 tup 시퀀스 데이터를 활용하여 zip()을 사용했습니다.

tup1 = \['banana', 15, tup\]​for o, t in zip(tup, tup1):
print(o) # o = tup​apple13\['apple', 'banana', 'mango'\]​print(t) # t = tup1banana15\['apple', 13, \['apple', 'banana', 'mango'\]\]​print(o, t) apple banana13 15\['apple', 'banana', 'mango'\] \['apple', 13, \['apple', 'banana', 'mango'\]\]

tup와 tup1이 각각 o와 t에 들어가면서 각 요소를 순서대로 출력합니다.

reversed()

순서를 거꾸로 만들기

reversed() 메서드를 사용하면 정방향 순서를 반대로 만들 수 있습니다. 기존의 코드를 reversed()안에 넣으면 됩니다.

for i in reversed(range(10)):
9876543210

enumerate() 메서드도 적용되는지 해봤는데, 오류가 나왔습니다.

for i, s in reversed(enumerate(fruits)): print(i, s)
TypeError: 'enumerate' object is not reversible

역으로 만들수 없다고 합니다. (머쓱)

​

sorted()

정렬하기

sorted() 메서드는 추후에 메서드 공부할때 따로 다뤄볼 예정입니다. 일단 sorted() 메서드를 기본값으로 사용하면 알파벳 순서로 정렬이 가능합니다.

​

여기 제가 랜덤으로 생성한 과일 리스트가 있습니다. sorted()메서드를 사용하여 정렬해보겠습니다.

fruits = \['Lychee','Pear', 'Rock melon', 'Dragonfruit', 'Avocado', 'Peach', 'Blackcurrant'\]sorted(fruits)
\['Avocado', 'Blackcurrant', 'Dragonfruit', 'Lychee', 'Peach', 'Pear', 'Rock melon'\]

알파벳 순서대로 잘 정렬된것을 확인할 수 있습니다.

각 함수별 핵심 요약

  • items() : 딕셔너리, key : value
  • enumerate() : 시퀀스(리스트, 튜플, 문자열 등) 번호와 요소
  • zip() : 두가지 이상 시퀀스
  • reversed() : 기존 정방향 순서를 거꾸로
  • sorted() : 기본값은 알파벳순서대로

​

\* 예제를 꼭 익힐것