본문 바로가기

app/python

python zen (계속 갱신중)

1.  get list element in a list of tuples

a = [(1, u'abc'), (2, u'def')]

# 기존 방법
def _seperate(l_wstnid_and_weight):
	l_wstnid, l_weight = [], []
	for k, w in l_wstnid_and_weight:
		l_wstnid.append(k)
		l_weight.append(w)

	return l_wstnid, l_weight

print(_seperate(a))

# 간략하고 쉽게 
unzip = list(zip(*a))

print((unzip[0], unzip[1]))

 

2. zip

a = dict(one=1, two=2, three=3)
b = {'one': 1, 'two': 2, 'three': 3}
c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
d = dict([('two', 2), ('one', 1), ('three', 3)])
e = dict({'three': 3, 'one': 1, 'two': 2})
a == b == c == d == e

3. zip index

for i, (a, b) in enumerate(zip(genres, plays)):
	print(i, a, b)

 

4. list in list sort (1번째 항을 기준으로 정렬)

from operator import itemgetter
list = sorted(list, key=itemgetter(1), reverse=True)

 

5. dict key sort

sort_dict = sorted(dict, key=lambda k: dict[k], reverse=True)

 

6. list to dict(갯수를 value로 )

from collections import Counter

c = Counter(clothes)

 

7. list in list to dict(이중 배열의 1번째 인자를 key, 갯수를 value로)

from collections import Counter

clothes = [["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]
c = Counter([x[1] for x in clothes])

 

8. list minus list 1 (두개의 리스트에서 중복 되지 않는 원소 찾기 - 같은 단어는 무조건 제거)

set(["leo", "kiki", "eden"]) - set(["eden", "kiki"])
# {'leo'}
set(["mislav", "stanko", "mislav", "ana"]) - set(["stanko", "ana", "mislav"])
# {}

 

9. list minus list 1 (두개의 리스트에서 중복 되지 않는 원소 찾기 - 한번만 삭제하기)

collections.Counter(["mislav", "stanko", "mislav", "ana"]) - collections.Counter(["stanko", "ana", "mislav"])
# {"mislav": 1}

 

10. sorted()시 람다로 두개의 키를 받고 싶을때 

def compare(a, b):
    t1 = a + b
    t2 = b + a
    return (int(t1) > int(t2)) - (int(t1) < int(t2))


def solution1(numbers):
    if set(numbers) == {0}:
        return "0"

    nums = [str(num) for num in numbers]
    nums = sorted(nums, key=cmp_to_key(compare), reverse=True)
    return "".join(nums)

11. int list to str list 

numbers = list(map(str, numbers))

numbers = list(map(lambda i: str(i), numbers))

12. run function name

str_temp = 'test_solution'
getattr(str_temp, 'lower')()
getattr(str_temp, 'upper')()

 

13 decorator memoization

import functools

@functools.lru_cache()
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-2) + fibonacci(n-1)

fibonacci(6)

'app > python' 카테고리의 다른 글

[python] 서버의 기본 동작 방식  (0) 2019.11.14
python heap 구현 소스  (0) 2019.10.14
python datetime / date  (0) 2019.06.04
pycharm 프로젝트 시작시 venv 셋팅  (0) 2019.01.22
python 시작시 작업들  (0) 2018.12.31