Pythonic code
- 파이썬의 문법적 특징을 의미.
- 짧고 이해가 용이
- python 코드에 대한 이해도
- 효율성
1. split & join
- split으로 문자열을 자르고, join으로 문자열을 붙인다.
1-1. split 함수
#일반적인 split
contents =" I am a human".split()
# unpacking
list=["c","python",""Java"]
#list = 'C, python, Java'
a,b,c=list.(",")
1-2. Join 함수
alpabet = ["a","b","c","d"]
"-".join(alpabet) # 'a-b-c-d'
2. List comprehension
- list를 사용하여 다른 list를 생성하는 기법
(다른 list를 포함하여 새로운 list를 만든다. )
- 포괄적 리스트 의미
- 파이썬에서 가장 많이 사용
- for + apppend 속도 빠름
2-1. Filter
- []안에서 if문을 의미
- if문 조건에 따라, 코딩 실행
- if - else(파이썬 삼항식) : [i+j if not (i==j) else i for i in list1 for j in list2 ]
result=[i for i in range(10) if i % 2==0]
# i를 10까지 반복하였을 때 만약 i를 2로 나눈 나머지가 0이면 i에 추가
# 위 코드에서 if문은 filter를 의미
result=[i+j for i in list1 for j in list2]
# nested loop
2-2. 2D List
sentence = "The quick brown for over the lazy dog".split()
somwthing =[[w.upper(), w.lower(), len(w)] for w in sentence]
# list의 element의 대문자, 소문자, 길이를 2D list 로 변환
#1D
res =[i+j for i in lis1 for j in lis2]
#위와 동일한 코드
for j in list2:
for i in list1:
i+j
#2D : 뒤에 for이 작동하고, 앞에 for 작동
res =[[i+j for i in lis1] for j in lis2]
# [[i+j for i in lis1 if j !='c'] for j in list2]
3. enumerate & zip
3-1. enumerate(열거하다) : list의 element를 추출할 경우, 번호를 추가하여 추출
for i, j in enumerate ('abc'):
print("{0} \{1}". format(i,j))
# 결과
# 0 A
# 1 B
# 2 C
st ="ABCD"
{i :j for i, j in enumerate(st)}
# 결과 {0:'A', 1:'B', 2:'C', 3:'D'}
text = "The quick brown for over the lazy dog"
{i : j.lower() for i, j in enumerate(text.split())}
# text에서 중복 불허용 후 list에 저장
list(set(text.split()))
3-2. Zip
lst1 = ['a','b','c']
lst2 = ['d','e','f']
for i,j in zip(lst1,lst2): # 병렬로 추출
print(i,j)
#a d
#b e
#c f
a,b,c = zip((1,2,3),(4,5,6),(7,8,9))
# 동일한 index의 값끼리 묶음
# (1,4,7)(2,5,8)(3,6,9)
[sum(x) for i in zip((1,2,3),(4,5,6),(7,8,9))]
# 동일한 index element를 합쳐서 list로 변환
# [12,15,18]