Python 관련 Tip
List
List 복사하기
List를 다른 List로 assign하는 경우 메모리를 공유하여 사용함. 따라서, 두 List 중 하나의 값을 업데이트하면 나머지 다른 List의 값도 바뀜. 따라서, 단순 복사 시에는 copy() method를 사용하여야 함.
List를 단순 assign한 경우
>>> list1 = [1,2,3]
>>> list2 = list1
>>> list2
[1,2,3]
>>> list1[0] = 4
>>> list1
[4,2,3]
>>> list2
[4,2,3]
List를 copy한 경우
>>> list1 = [1,2,3]
>>> list2 = list1.copy()
>>> list2
[1,2,3]
>>> list1[0] = 4
>>> list1
[4,2,3]
>>> list2
[1,2,3]
List 확장하기
List를 확장하는 방법에는 더하는 방법과 extend를 사용하는 방법이 있음
>>> list1 = [1,2,3]
>>> list2 = [4,5,6]
>>> list1 + list2 # 방법 1-1 : 더하기
[1,2,3,4,5,6]
>>> list1 += list2 # 방법 1-2 : 더하기
[1,2,3,4,5,6]
>>> list1.extend(list2) # 방법 2 : extend 사용하기
[1,2,3,4,5,6]
List unpacking
List 내 각각의 값을 Index 필요없이 변수에 할당하는 방법
방법 1
>>> aaa = ['spikey', 48, 'Photo']
>>> name, age, hobby = aaa # List unpacking
>>> name
'spikey'
>>> age
24
>>> hobby
'Photo'
방법 2
>>> aaa = ['spikey', 48, 'Photo']
>>> name, *ndata = aaa # List unpacking
>>> name
'spikey'
>>> ndata
[24, 'Photo']
List 내 개별 문자열을 합쳐서 문자열 만들기
개별 문자열들을 합치는 경우 +를 사용할 수 있으나, 문자열을 더해 나갈 때마다 문자열 객체를 생성하므로 메모리 관리 차원에서 join을 사용하는 것이 보다 효율적이다.
>>> a = ['I', 'am', 'a', 'boy.']
>>> print(' '.join(a))
I am a boy.
List 내에서 가장 빈번하게 나오는 요소 찾기
collections 라이브러리 내 most_common을 이용하여 List 내에서 가장 빈번하게 나오는 요소를 찾을 수 있다.
>>> from collections import Counter
>>> a = [1,1,2,3,5,6,2,5,6,7,4,1,2,1]
>>> cnt = Counter(a)
>>> print(cnt.most_common(2))
[(1,4), (2,3)]
List에서 중복된 값 제거하기
List 내에서 중복된 값을 제거하기 위해서는 아래와 같이 두가지 방법을 사용할 수 있다.
>>> ll = [1,2,3,4,3,2,3,4]
>>> list(set(ll))
[1,2,3,4]
>>> from collections import OrderedDict
>>> list(OrderedDict.fromkeys(ll).keys())
[1,2,3,4]
Dictionary
Dictionary 추가하기
List로 입력받은 자료를 dictionary에 추가하려면 아래와 같이 실행한다.
>>> aaa = ['A','B','C','D','E']
>>> bbb = [1,2,3,4,5]
>>> ccc = dict(zip(aaa,bbb))
>>> ccc
{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}
또한 저장된 dictionary 내 요소를 얻기 위해서는 아래와 같이 실행한다.
>>> ccc['c']
3
>>> ccc.get('D')
4
I/O
json 모듈 활용
List 형태의 데이터를 한번에 파일에 쓰거나 읽기 위해 json 모듈 내 dump, load명령어를 아래와 같이 사용할 수 있다.
import json
aaa = ['a','b','c']
f = open('text.txt','w')
json.dump(data,f)
f.close()
f = open('text.txt','r')
bbb = json.load(f)
f.close()
20210912 계속 추가 예정
Leave a comment