[Python]Basic4

Jae Gyeong Lee·2022년 8월 19일
0

1. enumerate

  • list에 포함된 각 원소에 index를 부여하는 함수.
  • 함수의 인자로 들어간 데이터 각각의 원소와 그 index를 return.
list_data = ['가','나','다','라','마']

for a in enumerate(list_data):
    print(a)   #tuple형태로 출력

=>
(0, '가')
(1, '나')
(2, '다')
(3, '라')
(4, '마')
list_data = ['가','나','다','라','마']

for num, a in enumerate(list_data):
    print(num, a)   #출력 값 분리
    
=>
0 가
1 나
2 다
3 라
4 마

2. zip

  • iterable자료형(list, tuple 등)을 인자로 받고(2개 이상) 각각의 원소를 index 순서에 맞춰 1개씩 뽑아 묶어준다(zipper).
  • iterable자료형을 병렬로 처리할 떄 유용하게 사용된다.
list_data1 = [1,2,3,4,5]
list_data2 = ['a','b','c','d','e']
list_data3 = ['ㄱ','ㄴ','ㄷ','ㄹ','ㅁ']

for result in zip(list_data1, list_data2, list_data3):
    print(result)

=>
(1, 'a', 'ㄱ')
(2, 'b', 'ㄴ')
(3, 'c', 'ㄷ')
(4, 'd', 'ㄹ')
(5, 'e', 'ㅁ')
for result1, result2, result3 in zip('12345', 'abcde', 'ABCDE'):
    print(result1, result2, result3)

=>
1 a A
2 b B
3 c C
4 d D
5 e E
list_data1 = [1,2,3,4,5]
list_data2 = ['a','b','c','d','e']
list_data3 = ['ㄱ','ㄴ','ㄷ','ㄹ','ㅁ']

result = list(zip(list_data1, list_data2, list_data3))
print(result)

=> [(1, 'a', 'ㄱ'), (2, 'b', 'ㄴ'), (3, 'c', 'ㄷ'), (4, 'd', 'ㄹ'), (5, 'e', 'ㅁ')]
  • iterable 자료형의 인자의 길이(변수의 갯수)가 서로 다르면, 가장 짧은 인자를 기준으로 데이터가 묶인다(남는 데이터는 무시).
for result1, result2, result3 in zip('12345', 'abcd', 'ABC'):
    print(result1, result2, result3)

=> 
1 a A
2 b B
3 c C
  • zip(* )을 통해 묶어준 데이터를 unpacking할 수 있다.
list_data1 = [1,2,3]; list_data2 = ['a','b','c']; list_data3 = ['ㄱ','ㄴ','ㄷ']
result = list(zip(list_data1, list_data2, list_data3))
print(result) # zip으로 묶여있는 데이터.

=> [(1, 'a', 'ㄱ'), (2, 'b', 'ㄴ'), (3, 'c', 'ㄷ')]


unzip_1, unzip_2, unzip_3 = [list(unzip) for unzip in zip(*result)]
print('unzip_1: ', unzip_1)
print('unzip_2: ', unzip_2)
print('unzip_3: ', unzip_3)

=>
unzip_1:  [1, 2, 3]
unzip_2:  ['a', 'b', 'c']
unzip_3:  ['ㄱ', 'ㄴ', 'ㄷ']
  • zip()을 통해 묶어준 뒤, dictionary형태로 값을 출력할 수 있다.
list_data1 = ['가','나','다','라','마']
list_data2 = ['A','B','C','D','E']

result = {a:b for a,b in zip(list_data1, list_data2)}
print(type(result))
print(result)

=>
<class 'dict'>
{'가': 'A', '나': 'B', '다': 'C', '라': 'D', '마': 'E'}

3. copy

일반적으로 변수를 복사할 때, 아래와 같이 ' = '를 사용함.

a_list = ['가', '나', '다']
b_list = a_list

그러나 이렇게 하면, list type의 data는 아래와 같이 b_list만 바꿔도 a_list도 변하는 문제 발생.

b_list.append('라') 
print(a_list)
print(b_list)

=>
['가', '나', '다', '라']
['가', '나', '다', '라']

copy()를 사용하면 문제 해결.

a_list = ['가', '나', '다']
b_list = a_list.copy()

b_list.append('라') 
print(a_list)
print(b_list)

=> 
['가', '나', '다']
['가', '나', '다', '라']
profile
안녕하세요 반갑습니다. 공부한 내용들을 기록하고 있습니다.

0개의 댓글