데이터과학자 - 강의/python

210507 python - built in function, 모듈 활용

vs질럿 2021. 5. 7. 20:16

from _collections import defaultdict

from _collections import defaultdict


def test01():
    artist = ['비틀즈', '비틀즈', '아이유', '아이유', '마이클 잭슨', '마이클 잭슨']
    music = ['yesterday', 'imagine', '너랑나', '마시멜로우', 'beat it', 'smooth criminal']
    gini = defaultdict(list)  # 기본 dict를 만들어서 ()객체를 key로 생성하고 value를 추가로 dict로 만드는 과정

    for idx, val in enumerate(artist):
        gini[val].append(music[idx])

    return gini
    
    
a = test01()

print(a)

# =====================값 추출=====================
for i in a.values():
    print(i)
    
    
#result
defaultdict(<class 'list'>, {'비틀즈': ['yesterday', 'imagine'], '아이유': ['너랑나', '마시멜로우'], '마이클 잭슨': ['beat it', 'smooth criminal']})
['yesterday', 'imagine']
['너랑나', '마시멜로우']
['beat it', 'smooth criminal']

기존의 dict는 이미 있는 key : value를 다시 넣으면 새로운 value가 덮어쓰기 되는데

defaultdict는 value가 리스트로 업데이트가 되어 기존의 value가 사라지지 않는다.

 

============================================================================

sum(), all(), any()

def test01():
    # 1. list, tuple 객체의 요소의 합을 출력하자
    list_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    res = sum(list_data)

    print(list_data)
    print(res)
    
    
test01()


#result
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
55


def test02():  # list 요소가 bool값 (all, any)  all() : And, And....  any() : or, or....
    '''
    True = 1, False = 0
    all() : list의 모든 요소가 참인 경우에만 True를 리턴. 하나라도 거짓이 있으면 False
    any() : list의 모든 요소가 거짓인 경우에만 False를 리턴. 하나라도 거짓이 있으면 True
    '''
    list_data1 = [True, True, True]
    list_data2 = [True, False, True]

    print(all(list_data1))
    print(all(list_data2))
    print(any(list_data1))
    print(any(list_data2))
    
    
test02()


#result
True
False
True
True

============================================================================

import string, ord(char), chr(int)

import string


def test01():
    print(string.ascii_uppercase)
    
    for i in string.ascii_uppercase:
        print(f"{i} ===> {ord(i)}", end=", ")
        
    print()
    for i in string.ascii_lowercase:
        print(f"{i} ===> {ord(i)}", end=", ")
    
    print()
    for i in range(65, 91):
        print(f"{i} ===> {chr(i)}", end=", ")
        
 
test01()


#result
ABCDEFGHIJKLMNOPQRSTUVWXYZ
A ===> 65, B ===> 66,  ...  Z ===> 90,
a ===> 97, b ===> 98,  ...  z ===> 122,
65 ===> A, 66 ===> B,  ...  90 ===> Z, 

 

============================================================================

import numpy as np (맛보기)

# numpy
import numpy as np
import random


# 한 개의 주사위를 360번 던져서 3의 배수의 눈이 나오는 횟수를 구하는 것을 1000번 하고
# 1000번의 결과를 x = []라는 변수에 넣어 x에 대한 평균, 분산, 표준편차를 구하자
def test():
    dice = [1, 2, 3, 4, 5, 6]
    x = []

    for i in range(1000):  # 1000번 반복 수행
        count = 0

        for j in range(360):
            res = random.choice(dice)  # dice list 중 랜덤으로 하나의 값을 res에 저장

            if res % 3 == 0:  # 그 주사위의 눈을 3으로 나눈 나머지 값이 0이면
                count += 1      # 카운트를 1씩 증가

        x.append(count)

    print(np.mean(x))  # 평균
    print(np.var(x))     # 분산
    print(np.std(x))     # 표준편차


test()


#result 수행할 때마다 당연히 결과가 다름
120.181
75.348239
8.68033634140982