https://www.edwith.org/aipython/lecture/22951/
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 하는데 주로 쓰임.
용례) *을 붙여준다.
'오늘의 코딩 > Python3' 카테고리의 다른 글
[4강] 좋은 훈련 세트 만들기 : 데이터 전처리 (1) | 2019.09.08 |
---|---|
[T아카데미] Scikit-Learn으로 다지는 머신러닝 기초 (0) | 2019.09.07 |
class와 객체지향 프로그래밍 (0) | 2019.08.16 |
인공지능을 위한 Python 프로그래밍 인강 (0) | 2019.07.31 |
Hello World (0) | 2019.06.15 |