Python/기본문법

Pythonic Code - Split & Join , List Comprehension

DevBabamba 2019. 6. 9. 19:05
반응형

# 이 자료는 인프런 '프로그래밍, 데이터 과학을 위한 파이썬 입문' 강좌의 내용을 적은것 입니다.

# 자세한 사항은 관련 강의를 들어보세요~!

Pythonic Code

1.종류

  • Split & Join

  • List Comprehension

  • Enumerate & Zip

  • Map Reduce

2.배워야 하는 이유?

  • 남 코드에 대한 이해도 <= 이게 제일 큰 이유!
  • 효율
    • 단순 for loop append 보다 list가 조금 더 빠르다 (그러나 차이는 미미하다고 한다)
    • 익숙해지면 코드도 짧아진다

Split & Join

  • String Type의 값을 나눠서 List형태로 반환

items1 = "one two three".split() 
print(items1) 
//['one', 'two', 'three'] 

items2 = "one,two,three".split(',') 
print(items2) 
//['one', 'two', 'three'] 
item3 = "one,two,three" 
a, b, c = item3.split(',') 
print(a) 
//one 
print(b) 
//two 
print(c) 
//three
  • String List를 합쳐 하나의 String으로 반환할 때 사용

colors = ['red', 'blue', 'green'] 
result1 = ''.join(colors) 
print(result1) 
//redbluegreen 

result2 = ' '.join(colors) 
print(result2) 
//red blue green 

result3 = ','.join(colors) 
print(result3) 
//red,blue,green

List Comprehension

  • 기존 List 사용하여 간단히 다른 List를 만드는 기법
  • 포괄적인 List, 포함되는 리스트라는 의미로 사용됨
  • 파이썬에서 가장 많이 사용되는 기법 중 하나
  • 일반적으로 for + append 보다 속도가 빠름
#일반적인 코드
result1 = []
for i in range(10):
    result1.append(i)
print(result1)
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#상단의 코드와 동일한 결과
result2 = [i for i in range(10)]
print(result2)
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#범위 중 2로 나눈 나머지가 0 인것
result3 = [i for i in range(10) if i % 2 == 0]
print(result3)
//[0, 2, 4, 6, 8]

#두 문자열을 섞어 두 알파벳의 리스트로 만들기
word1 = 'Hello'
word2 = 'world'
result4 = [i + j for i in word1 for j in word2]
print(result4)
//['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']

case1 = ['A', 'B', 'C']
case2 = ['D', 'E', 'A']

result5 = [i+j for i in case1 for j in case2 if not(i==j)]
print(result5)
//['AD', 'AE', 'BD', 'BE', 'BA', 'CD', 'CE', 'CA']

result5.sort()
print(result5)
//['AD', 'AE', 'BA', 'BD', 'BE', 'CA', 'CD', 'CE']

words3 = "The quick brown fox jumps over the lazy dog".split()

stuff = [[w.upper(), w.lower(), len(w)] for w in words3]
print(stuff)
//[['THE', 'the', 3], ['QUICK', 'quick', 5], ['BROWN', 'brown', 5], ['FOX', 'fox', 3], ['JUMPS', 'jumps', 5], ['OVER', 'over', 4], ['THE', 'the', 3], ['LAZY', 'lazy', 4], ['DOG', 'dog', 3]]

result6 = [[i+j for i in case2] for j in case2]
print(result6)
//[['DD', 'ED', 'AD'], ['DE', 'EE', 'AE'], ['DA', 'EA', 'AA']]

# result7 = []
# for i in result6:
#     for j in i:
#         result7.append(j)
result7 = [j for i in result6 for j in i]
print(result7)
//['DD', 'ED', 'AD', 'DE', 'EE', 'AE', 'DA', 'EA', 'AA']
반응형