Dolphins의 HelloWorld

Split, Join, List comprehensions 본문

python/python 심화

Split, Join, List comprehensions

돌핀's 2018. 7. 10. 12:51

Split 함수


Split 함수는 구분자를 통해 문자열을 나눠주는 역할을 한다.


나누어진 문자열은 List형태로 변환된다.


구분자를 주지 않았을 때는 기본적으로 공백을 기준으로 문자열이 나누어지게 된다.


아래의 코드를 통해 Split함수가 활용되는 모습을 살펴보자.


sentence = 'President Donald Trump is heading this week to Europe'
print(sentence.split()) #공백을 기준으로 분리
sentence = 'http://dolphins-it.tistory.com/category/python'
print(sentence.split('.')) #.을 기준으로 분리
a,b,c = sentence.split('.')
print(a); print(b); print(c);
#나눠진 것을 a,b,c에 unpacking





Join


join 함수는 split과 반대되는 역할을 수행하는 함수이다. 


즉 String List에 있는 것을을 합쳐 하나의 String으로 만드는 것이다.


아래 코드를 통해서 join의 활용방법을 살펴보겠다.


sentence = 'President Donald Trump is heading this week to Europe'
list = sentence.split()
print(list) #공백을 기준으로 분리

exp = ''.join(list)
# '와' 사이에 아무것도 없으므로 list배열을 그냥 다 붙인것임을 알 수 있다.
print(exp)

exp2 = ' '.join(list)
# 배열 원소들 사이에 공백을 두어 합쳤다.
print(exp2)

exp3 = ','.join(list)
# 배열 원소들 사이에 ,을 사용하면서 합쳤다.
print(exp3)




List comprehensions


List comprehensions 란 기존 List를 사용하여 다른 List를 만드는 방법이며


for + append보다 속도가 더 빠르다는 장점을 가진다.


다음 코드를 통해 기존의 for + append 와 list comprehension 코드에서의 차이를 살펴보자.


# for + append를 통해 0부터 9까지의 숫자를 배열에 추가
result = []
for i in range(10):
    result.append(i)
print(result)

#List comprehension을 통해 같은 과정 수행
result2 = []
result2 = [i for i in range(10)]
print(result2)


List comprehension을 사용했을 때 좀더 적은 줄로 간편하게 사용할 수 있음을 볼 수 있다.



조건문을 추가해주는 것도 가능한데 조건문을 추가할 때 여러줄이 될 수 있는 코드가 압축되서 표현된다는 장점이 극대화되는 것을 볼 수 있다.


예를들어 위의 코드에서 3의 배수만 뽑아내고 싶다면


result2 = [i for i in range(10) if i%3==0]


이렇게 써주면 잘 동작한다.


이중 for문을 쓰는 것처럼 동작시키는것도 가능한데 아래의 코드를 통해 살펴보겠다.


#구구단 구현 result = [] result = [i*j for i in range(2,10) for j in range(1,10)] print(result)



사실상 단 한줄을 통해 이중포문이 구현됨을 볼 수 있다.


주의할 점은 2차원이 아닌 1차원 배열안에 모든 결과가 들어간다는 사실이다.


대괄호 안에 대괄호를 한번 더 쓰는 방식으로 2차원 배열로 구현할 수도 있다.


아래 예시를 통해 이차원 배열로 구현하는 방식을 살펴보겠다.


result = []
result = [[i*j for i in range(1,10)] for j in range(2,10)]
print(result)



'python > python 심화' 카테고리의 다른 글

urllib 와 Beautiful soup  (0) 2018.07.13
lambda, map reduce  (0) 2018.07.10
Enumerate,Zip  (0) 2018.07.10
Python의 문자표현  (0) 2018.07.09
Comments