- join
여러 단어들을 하나로 붙일 때 사용
- 연결 시 빈칸 1칸으로 연결
alphabet = ['a','b','c','d'] result = ''.join(alphabet) print(result) # >> a b c d
- 연결 시 ", "으로 연결
result = ', '.join(alphabet) # >> a, b, c, d
- split
String Type 값을 나눠서 List 형태로 변환
- 빈칸을 기준으로 문자열 나누기
items = 'zero one two three'.split() print(items) # >> ['zero', 'one', 'two', 'three']
- "," 기준으로 문자열 나누기
example = "python,jquery,javascript" print(example.split(",")) # >> ['python', 'jquery', 'javascript']
- 리스트에 있는 각 값을 a,b,c 변수로 unpacking
example = "python,jquery,javascript" a,b,c = example.split(",") # >> a=python, b=jquery, c=javascript
(필터라는 기법을 활용해서)기존의 List를 사용하여 새로운 List를 만드는 기법
일반적으로 for+append 보다 속도가 빠르다.
result = [i for i in range(10)]
print(result)
# >> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
result = [i for i in range(10) if i%2==0]
print(result)
# >> [0, 2, 4, 6, 8]
case_1 = ['A','B','C']
case_2 = ['D','E','A']
result = [i+j for i in case_1 for j in case_2]
print(result)
# >> ['AD', 'AE', 'AA', 'BD', 'BE', 'BA', 'CD', 'CE', 'CA']
#필터 i와 j가 같다면 List에 추가하지 않음.
result = [i+j for i in case_1 for j in case_2 if not(i==j)]
print(result)
# >> ['AD', 'AE', 'BD', 'BE', 'BA', 'CD', 'CE', 'CA']
#차례대로 배열
result.sort()
print(result)
# >> ['AD', 'AE', 'BA', 'BD', 'BE', 'CA', 'CD', 'CE']
#문장을 빈칸 기준으로 나눠 list로 변환
words = "The quick brown fox jumps over the lazy dog".split()
stuff = [[w.upper(), w.lower(), len(w)] for w in words]
for i in stuff:
print(i)
''' >>
['THE', 'the', 3]
['QUICK', 'quick', 5]
['BROWN', 'brown', 5]
['FOX', 'fox', 3]
['JUMPS', 'jumps', 5]
['OVER', 'over', 4]
['THE', 'the', 3]
'''
case_1 = ["A","B","C"]
case_2 = ["D","E","F"]
result = [i+j for i in case_1 for j in case_2]
print(result)
# >> ['AD', 'AE', 'AF', 'BD', 'BE', 'BF', 'CD', 'CE', 'CF']
result = [[i+j for i in case_1] for j in case_2]
# >>[['AD', 'BD', 'CD'], ['AE', 'BE', 'CE'], ['AF', 'BF', 'CF']]
print(result)
👉 two dimensional일 때 바깥에 있는 list(여기선case_2)가 고정이 된다
- Enumerate
List의 element(List 값)를 추출할 때 인덱스 번호를 붙여서 추출
- list에 있는 인덱스와 값을 unpacking
for i,v in enumerate(['tic','tac','toe']): print(i,v) ''' >> 0 tic 1 tac 2 toe '''
- index와 값을 unpacking하여 list로 저장
mylist = ['a','b','c','d'] print(list(enumerate(mylist))) # >> [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
- 문장을 list로 만들고 index와 값을 unpacking하여 dict로 저장
print({i:j for i,j in enumerate('The fox jumps over the lazy dog'.split())}) # >>{0: 'The', 1: 'fox', 2: 'jumps', 3: 'over', 4: 'the', 5: 'lazy', 6: 'dog'}
- Zip
두 개의 list에서 같은 인덱스의 위치에 있는 값을 추출
- 병렬적으로 값을 추출
alist = ['a1','a2','a3'] blist = ['b1','b2','b3'] for a,b in zip(alist, blist): print(a,b) '''>> a1 b1 a2 b2 a3 b3 '''
- #각 tuple의 같은 index 끼리 묶음
a,b,c = zip((1,2,3),(10,20,30),(100,200,300)) print(a,b,c) # >> (1, 10, 100) (2, 20, 200) (3, 30, 300)
- 각 Tuple 같은 index를 묶어 합을 list로 변환
sum = [sum(x) for x in zip((1,2,3),(10,20,30),(100,200,300))] print(sum) # >> [111, 222, 333]
sequence형 자료형 (list, tuple) 안에 있는 element값 하나하나에 동일한 function을 적용
lambda x,y 인자값 : x+y return 값
print(list(map(f,ex,ex))) : [2, 4, 6, 8, 10]
lambda x:x**2
print(list(map(f,ex)))
[value **2 for value in ex]
👉 lambda를 사용하지 않아도 결과값은 같다.
#if filter도 사용 가능
ex = [1,2,3,4,5]
f = lambda x,y : x+y
filter = list(
map(
lambda x:x**2 if x%2==0
else x,ex
)
)
print(filter)
#>> [1, 4, 3, 16, 5]
곱하기, 제곱을 의미한다.
unpacking을 하기 위한 방법으로 사용한다.
여러개의 값들을 한번에 받을 때 사용한다 = 가변인자
ex) 1부터 몇 개의 값을 sum할지 모를 때 사용
둘다 같은 값이 나온다.
👉 즉 *하나는 unpacking 실행을 한다는 뜻이다.
def asterisk_test(a,b,c,d):
print(a,b,c,d)
dict = {"b":1, "c":2, "d":3}
asterisk_test(10,**dict)
#>> 10 1 2 3
딕트 타입의 값을 풀어줘서 넣어준다.
✔ dict : 딕셔너리로 key:value와 같은 구조
++ degue
appendleft(10) ⇒ 10,0,1,2,3 형태로 바뀐다.
++ defaultDict
초기값 없이 뭔가를 사용하게 될 때 사용
ex) 글자 카운트