Soohyun’s Machine-learning

[introducing Python] Notes 본문

Machine Learning/misc

[introducing Python] Notes

Alex_Rose 2017. 10. 22. 14:36

복제하기


start = 'Na ' * 4 + '\n'

middle = 'Hey' * 3 + '\n'

end = 'Goodbye.'


print(start + start + middle + end) 




slicing [start:end:step] 

step 만큼 건너뛰면서 start offset 부터 (end - 1) offset까지 sequence 추출


 

letters = 'abcdefghijklmnopqrstuvwxyz'


>>> letters[::7]                 # 처음부터 끝까지 7 step 씩 건너 뛰면서 문자 추출

'ahov'


>>>letters[4:20:3]             # 4번째부터 19번째까지 3 step 씩 건너 뛰면서 문자 추출

'ehknqt'


>>>letters[19:4]              # 19번째부터 끝까지 4 step 씩 건너 뛰면서 문자 추출

'tx'


>>>letters[:21:5]             # 처음부터 20번째까지 5 step 씩 건너 뛰면서 문자 추출

'afkpu'


>>>letters[::-1]               # 끝에서부터 시작 지점까지 빠짐없이 문자 추출 

'zyxwvu... cba'





control Str    (string 제어하기)


poem = '''All that doth flow me cannot liquid name

or else would fire and water be the same;

But that is liquid which is moist and wet

Fire that property can never get.

Then 'tis not cold that doth the fire put out

But 'tis the wet that makes it die, no doubt.'''




처음 13자 출력하기



>>>poem[:13]        

'All that doth'

 



All로 시작하나?



>>>poem.startswith('All')

True

 




That's all, folks! 로 끝나나?



>>>poem.endswith('That\'s all, folks!')

False

 




첫 번째로 the 가 나오는 offset은?



>>>word = 'the'

>>>poem.find(word)

73

 




마지막으로 the 가 나오는 offset은?



>>>poem.rfind(word)

214

 





세 글자 the 가 몇 번 나오는가?



>>>poem.count(word)

3

 





이 시는 글자와 숫자로만 이루어져 있나?



>>>poem.isalnum()

False                                # 구두점도 포함되어 있어서

 






리스트 자료형


Make list : [] or list()



>>>empty_list = []

 


또는



>>>empty_list = list()

 




다른 데이터 타입을 list로 변환 : list()



>>>list('cat')

['c','a','t']

 




튜플을 리스트로 변환



>>>a_tuple = ('ready','fire','aim')

>>>list(a_tuple)

['ready','fire','aim']

 




'/' 구분자로 나누어서 리스트로 변환



>>>birthday = '1/6/2000'

>>>birthday.split('/')

['1','6','2000']

 




리스트 병합하기 : extend() or +=



>>>love = ['love', 'you', 'jeon', 'in', 'soo']

>>>others = ['daisy', 'poppy', 'petal', 'river']

>>>love.extend(others)                                     # love += others    같은 역할. 같은 결과값

>>>love


['love', 'you', 'jeon', 'in', 'soo', 'daisy', 'poppy', 'petal', 'river']

 





append()는 병합하지 않고 other를 하나의 리스트로 해서 추가시킨다.



>>>love.append(others)

>>>love


['love', 'you', 'jeon', 'in', 'soo', ['daisy', 'poppy', 'petal', 'river']]

 




insert() : 원하는 위치에 항목을 추가한다.



>>>love.insert(0, 'I')

>>>love


['I', 'love', 'you', 'jeon', 'in', 'soo']

 




del : offset 항목 삭제하기



>>>del love[-1]

>>>love

['I', 'love', 'you', 'jeon', 'in']

 





remove() : 값으로 항목 삭제



>>>others = ['daisy', 'poppy', 'petal', 'river']

>>>others.remove('daisy')

>>>others

['poppy', 'petal', 'river']

 




index() : 값으로 offset 찾기



>>>others = ['daisy', 'poppy', 'petal', 'river']

>>>others.index('poppy')

1

 




in : 존재여부 확인하기



>>>others = ['daisy', 'poppy', 'petal', 'river']

>>>'poppy' in others

True

 




count() : 값 세기



>>>others = ['daisy', 'poppy', 'petal', 'river']

>>>others.count('poppy')

1

 




join() : 문자열로 변환하기



>>>others = ['daisy', 'poppy', 'petal', 'river']

>>>','.join(others)

'daisy, poppy, petal, river'

 



>>>friends = ['Harry', 'Hermione', 'Ron']

>>>separator = ' * '

>>>joined = separator.join(friends)

>>>joined


'Harry * Hermione * Ron'

 





sort() : 리스트 자체를 내부적으로 정렬함                            /                sorted() : 리스트의 정렬된 복사본을 반화ㅏㄴ



>>>others = ['daisy', 'poppy', 'petal', 'river']

>>>sorted_olivers = sorted(others)

>>>sorted_olivers

['daisy', 'petal', 'poppy', 'river']                            # 알파벳순으로 정렬


>>>others    

['daisy', 'poppy', 'petal', 'river']                            # 원본은 변하지 않았다. 

 


>>>others = ['daisy', 'poppy', 'petal', 'river']

>>>others.sort()

['daisy', 'petal', 'poppy', 'river']                            # 원본이 정렬되었다.

 








할당 : =                 /            복사 : copy()

한 리스트를 2 variables 에 할당했을 경우, 한 리스트를 변경하면 다른 리스트도 따라서 변경된다.  a를 바꿔도 b를 바꿔도 다른 한쪽에 적용됨.



>>>a = [1, 2, 3]

>>>b = a

>>>a[0] = 'surprise'

>>>a 

['surprise', 2, 3]


>>>b

['surprise', 2, 3]

 





tuple : ()



>>>oliver_tuple = 'Poppy',                                 # 뒤에 , (콤마)를 붙여서 tuple로 만든다

>>>oliver_tuple

('Poppy',)

 




tuple unpacking



>>>oliver_tuple = ('Poppy', 'Petal', 'Buddy', 'River')

>>>a, b, c, d = oliver_tuple

>>>a

'Poppy'

>>>d

'River'

 




list -> tuple



>>>oliver_list = ['Poppy', 'Petal', 'Buddy', 'River']

>>>tuple(oliver_list)

('Poppy', 'Petal', 'Buddy', 'River')

 






Dictionary    ( 비슷한 말 : associative array, hash, hashmap, dict  )



>>>lol = [['a', 'b']. ['c', 'd'], ['e', 'f']]

>>>dict(lol)

{'c':'d', 'a':'b', 'e':'f'}



>>>olivers = {'first':'Poppy', 'second':'Daisy', 'third':'Petal', 'fourth':'Buddy', 'fifth':'River'}

>>>olivers['second'] = 'Alex'

>>>olivers

{'first':'Poppy', 'second':'Alex', 'third':'Petal', 'fourth':'Buddy', 'fifth':'River'}

 





update() : 딕셔너리 결합하기 



>>>olivers = {'first':'Poppy', 'second':'Daisy', 'third':'Petal', 'fourth':'Buddy', 'fifth':'River'}

>>>others = {'sixth_first':'Lion', 'sixth_second':'Lena'}

>>>olivers.update(others)

{'first':'Poppy', 'second':'Daisy', 'third':'Petal', 'fourth':'Buddy', 'fifth':'River', 'sixth_second':'Lena', 'sixth_first':'Lion'}

 




key와 del 로 삭제하기



>>>del olivers['sixth_second']

>>>olivers

{'first':'Poppy', 'second':'Daisy', 'third':'Petal', 'fourth':'Buddy', 'fifth':'River', 'sixth_first':'Lion'}

 





clear() : 모든 항목 삭제



>>>olivers.clear()

>>>olivers

{}

 





key로 항목을 얻을 때, 해당 항목이 없을때 아래와 같이 출력하게 할 수 있다.



>>>olivers.get('Lena', 'Not in Olivers')

'Not in Olivers'

 


값을 지정하지 않으면 None, 아무것도 없는 게 나온다. 




values() : dict의 모든 values 가져오기



>>>list(olivers.values())

['Poppy','Daisy','Petal','Buddy','River','Lion']

 





items() : dict의 모든 key-values 얻기


 

>>>list(olivers.items())

[('first' ,'Poppy'), ('second','Daisy'), ('third','Petal'), ('fourth','Buddy'), ('fifth','River'), ('sixth','Lion')]








Set


value는 버리고 key만 남은 dict와 동일. 각 key는 유일해야 하다는 것과 순서가 없다는 건 dict와 동일하며, 어떤 것이 존재하는지 여부만 판단하기 위해서 사용한다.



set() : 셋 생성



>>>empty_set = set()

>>>even_numbers = {0, 2, 4, 6, 8}

>>>even_numbers

{0, 8, 4, 6, 2}

 




set() : data type 변환. 리스트, 문자열, 튜플, 딕셔너리로부터 중복된 값을 버린 셋 생성 가능. 딕셔너리에 set을 쓰면 key만 사용한다. 



>>>set('olivers')

{'o', 'l', 'i', 'v', 'e', 'r', 's'}

 


리스트에 'e'나 'i'같은게 2개씩 있어도 set에서는 하나씩만 나온다.




drinks = {

'martini' : {'vodka', 'vermouth'},

'black russian' : {'vodka', 'kahlua'},

'white russian' : {'cream', 'kahlua', 'vodka'},

'manhattan' : {'rye', 'vermouth', 'bitters'},

'screwdriver' : {'orange juice', 'vodka'}

}




값 테스트하기



>>>for name, contents in drinks.items():

...        if 'vodka' in contents and not ('vermouth' in contents or 'cream' in contents):

...              print(name)


screwdriver

black russian

 







Combination 과 operator 


set 값의 combination을 어떻게 확인할까? 오렌지 주스 혹은 vermouth가 들어있는 걸 찾으려고 하면?



set intersection operator    인 & (엠퍼샌드)를 써서 찾을 수 있다.



>>>for name, contents in drinks.items():

...        if contents & {'vermouth', 'orange juice'}:

...                    print(name)


screwdriver

martini

manhattan

 


& operator의 결과는 우리가 비교하고자 했던 두 재료의 모든 항목이 포함된 set이다. contents에 두 쟈료가 없으면 &은 False로 간주되는 empty set을 반환한다.




vodka 는 들어있지만, cream이나 vermouth는 없었으면 좋겠다면?



>>>for name, contents in drinks.items():

...            if 'vodka' in contents and not contents & {'vermouth', 'cream'}:

...                            print(name)

screwdriver

black russian

 






a = {1, 2}

b = {2, 3}


exclusive (대칭 차집합) : 한쪽에만 있는 값



>>>a ^ b

{1, 3}


>>>a.symmetric_difference(b)

{1, 3}



>>>bruss ^ wruss                            # 값에서 서로 다른 재료를 찾는다

{'cream'}

 




<= operator   issubset()     : 첫번째 set이 두번째 set의 subset(부분집합)인지 체크



>>>a <= b

False


>>>a.issubset(b)

False

 

 

black russian에 cream을 추가하면 white russian이 된다. 그래서 wruss는 bruss의 subset이다.

>>>bruss <= wruss

True


 

모든 set은 자신의 subset인가?

>>>a <= a

True


>>>a.issubset(a)

True







< operator : 첫번째 set이 두번째 set의 proper subset(진 부분집합)이 되려면 두 번째 set에는 첫번째 set의 모든 멤버를 포함한 그 이상의 멤버가 있어야 한다. 



>>>a < b

False


>>>a < a

False


>>>bruss < wruss

True

 




superset은 subset의 반대다. >= 나 issuperset()  을 사용해서 첫번째 set이 두번째 set의 superset인지 보자



>>>a >= b

False


>>>a.issuperset(b)

False


>>>wruss >= bruss

True

 

 

모든 set은 자신의 superset이다.


>>>a >= a

True


>>>a.issuperset(a)

True



이걸 반대로 < 로 해서 반대 방향으로 체크할 수도 있다. (기능은 동일하며 방향만 바뀌는것)





중복 리스트 만들기



>>>first_oliver = ['Poppy', 'oliver']

>>>second_oliver = ['Daisy','oliver']

>>>third_oliver = ['Petal', 'oliver']


>>>olivers = first_oliver, second_oliver, third_oliver

>>>olivers 

[['Poppy', 'oliver'], ['Daisy','oliver'], ['Petal','oliver']]

 





리스트들의 딕셔너리 만들기



>>>dict_olivers = {'first':first_oliver, 'second':second_oliver, 'third':third_oliver}

>>>dict_olivers

{'first':['Poppy','oliver'], 'secoond':['Daisy','oliver'], 'third':['Petal','oliver']}

 





tuple은 dict의 key가 될 수 있다.



tuple_olivers = {

(first, female, father}: 'Poppy',

(third, female, father}: 'Petal',

(fourth, male, mother}: 'Buddy'

}

 




'Machine Learning > misc' 카테고리의 다른 글

Startup & developer  (0) 2017.11.10
SNU Math + Machine learning course  (0) 2017.11.10
기호  (0) 2017.10.22
용어 이해  (0) 2017.10.13
신경망 뼈대 구축하기  (0) 2017.10.13
Comments