# Slice and Sorting


# 자연어처리할 때 str slice 많이 함

# list도 slice 가능, 긴 list 출력보다 sublist가 보기 편함



# Slice

s = '0123456789'

print(s)

0123456789


print(s[:3])

012


print(s[0:3])

012


print(s[-5:])

56789


print(s[5:])

56789


print(s[3:7])

3456


# 파이썬에서 str은 character list

l = list(s)

print(l)

['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']


print(l[3:7])

['3', '4', '5', '6']



# Sorting

s = '뒤의 다섯글자를 slice 하고 싶다면 아래처럼 하면 됩니다. 이 방법이 좋은 이유는 s의 길이가 얼마이던지 뒤의 5글자를 잘라낸다는 점입니다. 당연히 길이가 10인 s이니, 앞의 5부터 시작해도 동일한 결과가 나옵니다. sorting은 sorted 함수로 손쉽게 할 수 있습니다. 아래의 문장에서 각 글자가 몇 번 등장했는지 카운트를 하여 빈도수 순으로 정렬을 해보겠습니다. 카운트는 collections.Counter를 이용합니다.'

print(s)

뒤의 다섯글자를 slice 하고 싶다면 아래처럼 하면 됩니다. 이 방법이 좋은 이유는 s의 길이가 얼마이던지 뒤의 5글자를 잘라낸다는 점입니다. 당연히 길이가 10인 s이니, 앞의 5부터 시작해도 동일한 결과가 나옵니다. sorting은 sorted 함수로 손쉽게 할 수 있습니다. 아래의 문장에서 각 글자가 몇 번 등장했는지 카운트를 하여 빈도수 순으로 정렬을 해보겠습니다. 카운트는 collections.Counter를 이용합니다.


# counter는 dict 형식, items()를 하면 (글자, 빈도수) pair가 만들어짐

# sorted에서 key는 정렬기준을 정의

from collections import Counter

counter = Counter(s)


print(list(counter.items())[:10], '...\n')

[('뒤', 2), ('의', 5), (' ', 52), ('다', 9), ('섯', 1), ('글', 3), ('자', 3), ('를', 4), ('s', 6), ('l', 3)] ...


# lambda: 이름없는 함수

# lambda x:x[1] : x라는 변수가 들어왔을 때, x[1]을 return하라는 의미

# (단어, 빈도수)가 x로 입력되면 1번째 값인 빈도수를 return

# 이를 기준으로 정렬, 순서는 reverse로 숫자가 큰것에서 작은것으로 decreasing order를 따름

from pprint import pprint

pprint(sorted(counter.items(), key=lambda x:x[1], reverse=True)[:10])

[(' ', 52),

 ('다', 9),

 ('이', 8),

 ('니', 7),

 ('.', 7),

 ('s', 6),

 ('의', 5),

 ('o', 5),

 ('를', 4),

 ('e', 4)]


# reverse 대신 빈도수에 -1을 곱해도 된다
pprint(sorted(counter.items(), key=lambda x:-x[1])[:10])
[(' ', 52),
 ('다', 9),
 ('이', 8),
 ('니', 7),
 ('.', 7),
 ('s', 6),
 ('의', 5),
 ('o', 5),
 ('를', 4),
 ('e', 4)]


# 빈도수 기준으로 정렬

pprint(sorted(counter.items(), key=lambda x:x[1])[:10])

[('섯', 1),

 ('고', 1),

 ('싶', 1),

 ('처', 1),

 ('럼', 1),

 ('됩', 1),

 ('방', 1),

 ('법', 1),

 ('좋', 1),

 ('유', 1)]


# 빈도수, alphabet order로 정렬

pprint(sorted(counter.items(), key=lambda x:(x[1], x[0]))[:10])

[(',', 1),

 ('0', 1),

 ('1', 1),

 ('C', 1),

 ('d', 1),

 ('g', 1),

 ('u', 1),

 ('각', 1),

 ('게', 1),

 ('겠', 1)]


# 함수로 만들어 사용

def sorting_key(x):

    return -x[1]

pprint(sorted(counter.items(), key=sorting_key)[:10])

[(' ', 52),

 ('다', 9),

 ('이', 8),

 ('니', 7),

 ('.', 7),

 ('s', 6),

 ('의', 5),

 ('o', 5),

 ('를', 4),

 ('e', 4)]



'파이썬' 카테고리의 다른 글

Scraping Naver Movie  (0) 2017.08.30
_yield_len_iter  (0) 2017.08.29
list comprehension  (0) 2017.08.28
Pickle  (0) 2017.08.28
Dictionary  (0) 2017.08.28

최종 결과물 만들 목표

http://todomvc.com/



'javascript' 카테고리의 다른 글

계산기 (2)  (0) 2017.09.04
계산기  (0) 2017.09.04
천 단위 쉼표 표시  (0) 2017.09.04
구구단 반복문  (0) 2017.09.04
javascript 서비스 사이트  (0) 2017.08.28

javascript 서비스 사이트



1) repl.it

화면 왼쪽이 코드, 오른쪽이 콘솔


2) jsfiddle.net

ui를 입힐 수 있다


3) babel

최신 javascript 문법으로 코드를 짜면 익스플로러9까지도 실행 가능하게 번역해줌



'javascript' 카테고리의 다른 글

계산기 (2)  (0) 2017.09.04
계산기  (0) 2017.09.04
천 단위 쉼표 표시  (0) 2017.09.04
구구단 반복문  (0) 2017.09.04
최종 결과물 만들 목표  (0) 2017.08.28

# list comprehension 

# docs는 list of list of str

# 이를 list of str로 flatten 시킴


docs = [

    '이건 테스트 문장입니다'.split(),

    '두번째 줄입니다'.split(),

    '마지막 줄입니다'.split()

    ]

print(docs)

 [['이건', '테스트', '문장입니다'], ['두번째', '줄입니다'], ['마지막', '줄입니다']]



# flatten 시키기 1

flatten_docs = [word for doc in docs for word in doc]

print(flatten_docs)

['이건', '테스트', '문장입니다', '두번째', '줄입니다', '마지막', '줄입니다']

# for doc in docs 라는 list를 돌면서 그 안의 doc 이라는 list를 가져옴

# 그 다음의 for word in docs는 doc 이라는 list 안의 word 라는 str을 정의

# 이런 word 들을 하나의 list로 묶는다는 의미로 [word for... for...]이 적합



# flatten 시키기 2

flatten_docs_ = []

for doc in docs:

    for word in doc:

        flatten_docs_.append(word)

print(flatten_docs_)

['이건', '테스트', '문장입니다', '두번째', '줄입니다', '마지막', '줄입니다']



# set에도 적용 됨

flatten_docs_set = {word for doc in docs for word in doc}

print(flatten_docs_set)


term_vectors = {

    'doc1' : '이건 테스트 문장입니다'.split(),

    'doc2' : '두번째 줄입니다'.split(),

    'doc3' : '마지막 줄입니다.'.split()

    }

flatten_terms = {term for key, terms in term_vectors.items() for term in terms}

print(flatten_terms)

{'마지막', '줄입니다', '줄입니다.', '테스트', '이건', '두번째', '문장입니다'}


# dict에도 적용 됨

# dict.keys(): dict의 키

# dict.values(): 값

# dict.items(): (key, value) pair

# => iteration 할 수 있는 형태로 제공

d = {

    'a':1,

    'b':2,

    'c':3

    }


print('\nitems()')

for key, value in d.items():

    print(key, value)

items()

a 1

b 2

c 3


print('\nkeys()')

print([key for key in d.keys()])

keys()

['a', 'b', 'c']


print('\nvalues()')

print([value for value in d.values()])

values()

[1, 2, 3]


sum(d.values())



# enumerate

# 1. JAVA처럼 짠 것

I = ['a', 'b', 'c', 'd', 'e']

for i in range(len(I)):

    print('I[{}] = {}'.format(i, I[i]))

I[0] = a

I[1] = b

I[2] = c

I[3] = d

I[4] = e


# 2. enumerate 이용

for i, item in enumerate(I):

    print('I[{}] = {}'.format(i, item))

I[0] = a

I[1] = b

I[2] = c

I[3] = d

I[4] = e


# set, dict와 같이 iterable한 모든 경우에 이용 가능

S = ['a', 'b', 'c', 'd', 'e']

for i, item in enumerate(S):

    print('{}: {}'.format(i, item))

0: a

1: b

2: c

3: d

4: e

    



'파이썬' 카테고리의 다른 글

_yield_len_iter  (0) 2017.08.29
slice and sorting  (0) 2017.08.29
Pickle  (0) 2017.08.28
Dictionary  (0) 2017.08.28
마인크래프트로 배우는 파이썬 프로그래밍  (0) 2017.08.25

# python pickle

# 데이터를 저장하는 방식

# 앞에서는 dict를 JSON으로 저장하였는데, 이는 text 파일 형식으로 dict를 저장한 것

# numpy object, sparse matrix, list, tuple, dict, set 등 모두 pickling 가능


representor = {

    'name': '흑미',

    'age' : 100,

    'interets' : ['programming','game'],

    'friends' : {

        'name' : 'nana',

        'id' : 'na123'

    }

}


from pprint import pprint

pprint(representor)

{'age': 100,

 'friends': {'id': 'na123', 'name': 'nana'},

 'interets': ['programming', 'game'],

 'name': '흑미'}


import os

if not os.path.exists('tmp'):

    os.makedirs('tmp')



# pickle 저장/읽기

# wb: write binary

# rb: read binary

import pickle

with open('tmp/representor.pkl', 'wb') as f:

    pickle.dump(representor, f)


with open('tmp/representor.pkl', 'rb') as f:

    loaded_representor = pickle.load(f)


pprint(load_representor)

{'age': 100,

 'friends': {'id': 'na123', 'name': 'nana'},

 'interets': ['programming', 'game'],

 'name': '흑미'}



'파이썬' 카테고리의 다른 글

_yield_len_iter  (0) 2017.08.29
slice and sorting  (0) 2017.08.29
list comprehension  (0) 2017.08.28
Dictionary  (0) 2017.08.28
마인크래프트로 배우는 파이썬 프로그래밍  (0) 2017.08.25

# python dictionary

# 특징: 1) 항목의 순서를 따지지 않는다

          2) 0 또는 1과 같은 오프셋으로 항목을 선택할 수 없다.

          3) 대신, 값에 상응하는 고유한 키를 지정한다

          4) 키는 대부분 문자열

          5) 딕셔너리는 변경 가능, 키-값 요소를 추가, 삭제, 수정할 수 있음


representor = {

    'name': '흑미',

    'age' : 100,

    'interets' : ['programming','game'],

    'friends' : {

        'name' : 'nana',

        'id' : 'na123'

    }

}


representor['name']

'흑미'


representor['friends']['name']

'nana'


# 예쁘게 출력

from pprint import pprint

pprint(representor)

{'age': 100,

 'friends': {'id': 'na123', 'name': 'nana'},

 'interets': ['programming', 'game'],

 'name': '흑미'}


# representor 저장


fname = 'tmp/representor.json'

folder = fname.split('/')[0]


print(fname, folder)

tmp/representor.json tmp


# 저장하려는 path가 존재하지 않을 때

import os


print(os.path.exists(folder))

True


if not os.path.exists(folder):

    os.makedirs(folder)

    print('created %s' %folder)



# JSON 형식의 데이터 저장

# with open: 해당 구문이 끝나면 f.close() 자동으로 실행


import json

with open('tmp/representor.json', 'w', encoding='utf-8') as f:

          json.dump(representor, f)

    

# JSON 파일 불러오기

with open(fname, encoding='utf-8') as f:

          loaded_representor = json.load(f)

pprint(loaded_representor)

{'age': 100,

 'friends': {'id': 'na123', 'name': 'nana'},

 'interets': ['programming', 'game'],

 'name': '흑미'}



# 새로운 정보 추가하기


representor['likes'] = ['coffee', 'drinks']

pprint(representor)

{'age': 100,

 'friends': {'id': 'na123', 'name': 'nana'},

 'interets': ['programming', 'game'],

 'likes': ['coffee', 'drinks'],

 'name': '흑미'}


# JSONObject에 어떤 key가 들어있는지 확인

print('representor keys:', representor.keys())

representor keys: dict_keys(['name', 'age', 'interets', 'friends', 'likes'])


print('representor ["friends"] keys:' representor['friends'].keys())

representor ["friends"] keys: dict_keys(['name', 'id'])


print('representor has age?:', 'age' in representor)

representor has age?: True


# JSONObject는 dict이기 때문에 존재하지 않는 key 입력시 에러

representor['wrong key']

Traceback (most recent call last):

  File "C:\Users\joo\Desktop\딥러닝\selfStudy\day0\Day0_0.py", line 81, in <module>

    representor['wrong key']

KeyError: 'wrong key'


# 이를 방지하기위해 dic.get('key', default value)를 이용해 default return value를 지정

representor.get('worng key', [])





'파이썬' 카테고리의 다른 글

_yield_len_iter  (0) 2017.08.29
slice and sorting  (0) 2017.08.29
list comprehension  (0) 2017.08.28
Pickle  (0) 2017.08.28
마인크래프트로 배우는 파이썬 프로그래밍  (0) 2017.08.25


Jupyter notebook 단축키


* 단축키 보는 방법: ESC를 눌러 edit mode 비활성화 -> H




* Command & Edit mode


- Shift + Enter: 코드 실행




* Command mode


- A: 위에 새 Cell 만들기

- B: 아래에 새 Cell 만들기

- X: 해당 Cell 삭제

- Z: 바로 전 삭제 Cell 복원

- Y: coding type 페이지

- M: markdown type 페이지




* Edit mode

- Ctrl + Z : undo

# 마인크래프트로 배우는 파이썬 프로그래밍 


# 코드, 리소스 링크

 

https://www.nostarch.com/programwithminecraft

 

https://github.com/Jpub/ProgramWithinecraft

'파이썬' 카테고리의 다른 글

_yield_len_iter  (0) 2017.08.29
slice and sorting  (0) 2017.08.29
list comprehension  (0) 2017.08.28
Pickle  (0) 2017.08.28
Dictionary  (0) 2017.08.28


1. 키 저장소 파일이 존재하지만 비어 있음


내가 실행한 명령어는 : -exportcert -list -v -alias 키저장소이름 - keysotre 키저장소주소 


이때 키 저장소 주소에 키저장소 이름까지 들어가야함


ex) 키저장소 이름이 example이고, 바탕화면에 키저장소가 있는 경우


-exportcert -list -v -alias example - keysotre C:\Users\Name\Desktop\example.jks





2. 별칭이 존재하지 않습니다


위 명령어에서 키 저장소 이름 뒤에 .jks를 붙였을 때 나타나는 오류


.jks를 빼면 됨


+ Recent posts