진박사의 일상

[Python tip] 2개의 list를 함께 정렬하기 본문

프로그래밍

[Python tip] 2개의 list를 함께 정렬하기

진박사. 2021. 9. 18. 21:37
a = [1,3,4]
b = ['a','c','d']
a.append(2)
b.append('b')
print(a) ## [1, 3, 4, 2]
print(b) ## ['a', 'c', 'd', 'b']
a, b = map(list, zip(*sorted(zip(a,b))))
print(a) ##[1, 2, 3, 4]
print(b) ##['a', 'b', 'c', 'd']

2개의 배열의 정렬 순서를 동일하게 하고 싶은 경우가 있다. (ex, 좌표값의 dx, dy를 각각 저장해 놓은 경우)

이럴 때 사용할 수 있는 방법이 zip 함수를 활용하는 것.

zip 함수를 써서 두 배열을 하나의 set로 만들어 sorted해주고 그것을 다시 unzip 연산자 *를 붙여서 zip에 넣어주면 tuple 형태로 정렬된 tuple이 나온다. 그것을 map 함수로 list화 해주고 다시 원래 변수로 넣어주면 두 리스트가 같은 순서로 정렬된 것을 볼 수 있다!