본문 바로가기

오늘의 코딩/Python3

머신러닝을 위한 python 워밍업 1강

https://www.edwith.org/aipython/lecture/22951/

 

[LECTURE] Overview : edwith

Pythonic Code Overview   학습 목표 Pythonic Code는 간단하게, 다른 사람의 코드를 잘 이해하기 위해서 파이썬 특유의 문법을 활용하여 효율적으로 코드를... - 커넥트재단

www.edwith.org

Split & Join

문자열을 나누고 합친다.

colors1 = ['red','blue','yellow','green']
result1 = ''
for s in colors1:
    result1 += s
    
result1
>>'redblueyellowgreen'

이렇게 해도 되지만... 더 짧게 코딩할 수도 있다!

바로... .join() 을 이용해서!

 

''.join()

여러 단어를 하나로 붙일 때 사용한다.

colors = ['red','blue','yellow','green']
result=''.join(colors)
result
>>'redblueyellowgreen'
colors = ['red','blue','yellow','green']
result='-'.join(colors)
result
>>'red-blue-yellow-green'

 

 

.split()

string type의 값을 나눠서 list 형태로 변환

news = '한국경제연구원이 작년 11월 해외사업장을 가진 기업 150개를 설문한 결과 96%가 “국내 유턴계획이 없다”고 답했다. 국내 유턴을 고려하는 기업은 단 2곳(1.3%)에 불과했다.'.split()
print(news)
>>['한국경제연구원이', '작년', '11월', '해외사업장을', '가진', '기업', '150개를', '설문한', '결과', '96%가', '“국내', '유턴계획이', '없다”고', '답했다.', '국내', '유턴을', '고려하는', '기업은', '단', '2곳(1.3%)에', '불과했다.']

.split(",") 

해당 문자를 기준으로 값을 나눈다.

example = 'python,java,jquery'
example.split(",")

a,b,c 에 unpacking

a,b,c=example.split(",")
print(a,b,c)

 

List Comprehension

리스트에 넣을 반복문과 조건식을 한 줄만에 민들어준다.

일반적인 방식

result=[]
for i in range(10):
    result.append(i)
    
result
>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

List Comprehension

result = [i for i in range(10) if i %2 ==0]
print(result)
word_1="Hello"
word_2="World"
result=[i+j for i in word_1 for j in word_2]
result
...더보기

>>['HW',
 'Ho',
 'Hr',
 'Hl',
 'Hd',
 'eW',
 'eo',
 'er',
 'el',
 'ed',
 'lW',
 'lo',
 'lr',
 'll',
 'ld',
 'lW',
 'lo',
 'lr',
 'll',
 'ld',
 'oW',
 'oo',
 'or',
 'ol',
 'od']

i 먼저 돌면서  j(1) 할당.   
그냥 하면 1차원 리스트가 된다.

word_1="Hello"
word_2="World"
result=[[i+j for i in word_1] for j in word_2]
result

>>[['HW', 'eW', 'lW', 'lW', 'oW'],
 ['Ho', 'eo', 'lo', 'lo', 'oo'],
 ['Hr', 'er', 'lr', 'lr', 'or'],
 ['Hl', 'el', 'll', 'll', 'ol'],
 ['Hd', 'ed', 'ld', 'ld', 'od']]

 

대괄호로 묶으면 행렬이 된다.   

 

list 형태를 설정할 수 있다.

news = 'Named by 16th century Portuguese mapmakers, the Paracels are a collection of 130 small coral islands and reefs in the northwestern part of the South China Sea. They support abundant marine life. But more than being just a rich fishing ground, there is speculation the islands could harbor potential energy reserves.'.split()
print(news)
>>['Named', 'by', '16th', 'century', 'Portuguese', 'mapmakers,', 'the', 'Paracels', 'are', 'a', 'collection', 'of', '130', 'small', 'coral', 'islands', 'and', 'reefs', 'in', 'the', 'northwestern', 'part', 'of', 'the', 'South', 'China', 'Sea.', 'They', 'support', 'abundant', 'marine', 'life.', 'But', 'more', 'than', 'being', 'just', 'a', 'rich', 'fishing', 'ground,', 'there', 'is', 'speculation', 'the', 'islands', 'could', 'harbor', 'potential', 'energy', 'reserves.']


stuff= [[w.upper(),w.lower(),len(w)] for w in news]
print (stuff)
>>[['NAMED', 'named', 5], ['BY', 'by', 2], ['16TH', '16th', 4], ['CENTURY', 'century', 7], ['PORTUGUESE', 'portuguese', 10], ['MAPMAKERS,', 'mapmakers,', 10], ['THE', 'the', 3], ['PARACELS', 'paracels', 8], ['ARE', 'are', 3], ['A', 'a', 1], ['COLLECTION', 'collection', 10], ['OF', 'of', 2], ['130', '130', 3], ['SMALL', 'small', 5], ['CORAL', 'coral', 5], ['ISLANDS', 'islands', 7], ['AND', 'and', 3], ['REEFS', 'reefs', 5], ['IN', 'in', 2], ['THE', 'the', 3], ['NORTHWESTERN', 'northwestern', 12], ['PART', 'part', 4], ['OF', 'of', 2], ['THE', 'the', 3], ['SOUTH', 'south', 5], ['CHINA', 'china', 5], ['SEA.', 'sea.', 4], ['THEY', 'they', 4], ['SUPPORT', 'support', 7], ['ABUNDANT', 'abundant', 8], ['MARINE', 'marine', 6], ['LIFE.', 'life.', 5], ['BUT', 'but', 3], ['MORE', 'more', 4], ['THAN', 'than', 4], ['BEING', 'being', 5], ['JUST', 'just', 4], ['A', 'a', 1], ['RICH', 'rich', 4], ['FISHING', 'fishing', 7], ['GROUND,', 'ground,', 7], ['THERE', 'there', 5], ['IS', 'is', 2], ['SPECULATION', 'speculation', 11], ['THE', 'the', 3], ['ISLANDS', 'islands', 7], ['COULD', 'could', 5], ['HARBOR', 'harbor', 6], ['POTENTIAL', 'potential', 9], ['ENERGY', 'energy', 6], ['RESERVES.', 'reserves.', 9]]

print (stuff) 하면 리스트들이 리스트에 묶여서 출력됨.

for loop 를 이용하면 리스트 각각이 출력됨.

for i in stuff:
    print(i)
...더보기

>>['NAMED', 'named', 5]
['BY', 'by', 2]
['16TH', '16th', 4]
['CENTURY', 'century', 7]
['PORTUGUESE', 'portuguese', 10]
['MAPMAKERS,', 'mapmakers,', 10]
['THE', 'the', 3]
['PARACELS', 'paracels', 8]
['ARE', 'are', 3]
['A', 'a', 1]
['COLLECTION', 'collection', 10]
['OF', 'of', 2]
['130', '130', 3]
['SMALL', 'small', 5]
['CORAL', 'coral', 5]
['ISLANDS', 'islands', 7]
['AND', 'and', 3]
['REEFS', 'reefs', 5]
['IN', 'in', 2]
['THE', 'the', 3]
['NORTHWESTERN', 'northwestern', 12]
['PART', 'part', 4]
['OF', 'of', 2]
['THE', 'the', 3]
['SOUTH', 'south', 5]
['CHINA', 'china', 5]
['SEA.', 'sea.', 4]
['THEY', 'they', 4]
['SUPPORT', 'support', 7]
['ABUNDANT', 'abundant', 8]
['MARINE', 'marine', 6]
['LIFE.', 'life.', 5]
['BUT', 'but', 3]
['MORE', 'more', 4]
['THAN', 'than', 4]
['BEING', 'being', 5]
['JUST', 'just', 4]
['A', 'a', 1]
['RICH', 'rich', 4]
['FISHING', 'fishing', 7]
['GROUND,', 'ground,', 7]
['THERE', 'there', 5]
['IS', 'is', 2]
['SPECULATION', 'speculation', 11]
['THE', 'the', 3]
['ISLANDS', 'islands', 7]
['COULD', 'could', 5]
['HARBOR', 'harbor', 6]
['POTENTIAL', 'potential', 9]
['ENERGY', 'energy', 6]
['RESERVES.', 'reserves.', 9]

 

Enumerate & Zip

리스트의 값을 추출할때 함께 인덱스를 추출할 수 있는 방법으로 이용되는 enumerate 와

두개 이상의 list 값을 병렬적으로 추출할 수 있는 zip 모듈을 사용하여 pythonic code를 작성.

#enumerate 리스트 안의 값을 뽑아낼 때, 인덱스 번호를 붙임.
for i,v in enumerate (['red','orange','yellow']):
	print(i,v)

>>0 red 1 orange 2 yellow

#zip 리스트에서 같은 인덱스에 위치한 원소끼리 묶어준다
fruits = ['apple','pineapple','banana']
colors = ['red','orange','green']

for a,b in zip(fruits,colors):
	print(a,b)

>>apple red pineapple orange banana green

Lambda & MapReduce

함수처럼 사용가능한 익명함수인 Lambda

Sequence 자료형의 데이터에서 함수를 적용하는 방법인 Map Function 과 Reduce Function

#lambda 함수 임의의 함수를 지정해서 간단히 쓸 수 있다.
f= lambda x,y: x+y
print(f(x,y))

 

#리스트의 원소들에 대해 똑같은 함수를 적용함. list와 함께 사용해야 한다. 
ex = [1,2,3,4,5]
f = lambda i : i*2 

print (list (map (f, ex)))
>> [2, 4, 6, 8, 10]

map 함수는 리스트의 요소를 지정된 함수로 처리해주는 함수이다.

(map은 원본 리스트를 변경하지 않고 새 리스트를 생성함).

 

Asterisk

unpacking 하는데 주로 쓰임.

용례) *을 붙여준다.