본문 바로가기
PROGRAMMING/PYTHON

[Python] 파이썬을 파이썬답게 - iterable/sequence type 다루기

by 안녕나는현서 2022. 1. 15.
728x90

https://programmers.co.kr/learn/courses/4008

 

파이썬을 파이썬답게

본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코

programmers.co.kr

 

iterable

  • 자신의 멤버를 하나씩 리턴할 수 있는 객체 (반복가능한 객체)
  • list, str, tuple, dictionary 등

 

[2차원 리스트 행-열 바꾸기]

mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = [[], [], []]

for i in range(len(mylist)):
	for j in range(len(mylist)):
    	new_list[i].append(mylist[j][i])

# zip, unpacking 사용
mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = list(map(list, zip(*mylist)))
  • zip 함수
    • 각 iterable의 요소들을 모으는 iterator를 생성
    • 튜플의 iterator를 반환하는데, i번째 튜플은 각 인자로 전달된 시퀀스나 iterable의 i번째 요소를 포함함
    • 서로 길이가 다른 리스트가 인자로 들어오는 경우에는 길이가 짧은 쪽까지만 iteration이 이루어짐
    • 공식 문서 - zip
# 사용 예시
mylist = [1, 2, 3]
new_list = [40, 50, 60]
for i in zip(mylist, new_list):
    print (i)

(1, 40)
(2, 50)
(3, 60)

# 여러 개의 iterable 동시에 순회할 경우
list1 = [1, 2, 3, 4]
list2 = [100, 120, 30, 300]
list3 = [392, 2, 33, 1]
answer = []
for number1, number2, number3 in zip(list1, list2, list3):
   print(number1 + number2 + number3)
   
# key리스트와 value리스트로 딕셔너리 생성하기
animals = ['cat', 'dog', 'lion']
sounds = ['meow', 'woof', 'roar']
answer = dict(zip(animals, sounds)) # {'cat': 'meow', 'dog': 'woof', 'lion': 'roar'}

# 리스트의 i번째, i+1번째 요소의 차
def solution(mylist):
    answer = []
    for number1, number2 in zip(mylist, mylist[1:]):
        answer.append(abs(number1 - number2))
    return answer

 

[모든 멤버의 타입 변환]

list1 = ['1', '100', '33']
list2 = []
for value in list1:
    list2.append(int(value))

# map함수 활용
list1 = ['1', '100', '33']
list2 = list(map(int, list1))

 

Sequence Type

  • int타입 인덱스를 통해, 원소에 접근할 수 있는 iterable
  • list, str, tuple

 

[시퀀스 멤버를 하나로 이어붙이기]

my_list = ['1', '100', '33']
answer = ''
for value in my_list:
    answer += value

# join함수 사용
my_list = ['1', '100', '33']
answer = ''.join(my_list)
728x90

댓글