반응형

 

 

- 부분 일치 : in, not in

print('bbb' in 'aaa-bbb-ccc')
# True

print('xxx' in 'aaa-bbb-ccc')
# False

print('abc' in 'aaa-bbb-ccc')
# False

 

 

 

- 앞부분 일치 : startswith()

str = 'aaa-bbb-ccc'

print(str.startswith('aaa'))
# True

print(str.startswith('bbb'))
# False

* 여러 개 중에서는 하나라도 일치하면 True, 하나라도 일치하지 않으면 False

 

 

 

- 뒷부분 일치 : endswith()

str = 'aaa-bbb-ccc'

print(str.endswith('ccc'))
# True

print(str.endswith('bbb'))
# False

print(str.endswith(('aaa', 'bbb', 'ccc')))
# True

* 여러 개 중에서는 하나라도 일치하면 True, 하나라도 일치하지 않으면 False

 

 

 

 

 

 

 

 

 

 

 

반응형

'AI > python' 카테고리의 다른 글

Pythonic Code - Set()  (0) 2021.01.15
Pythonic Code - Deque, Ordered Dict, Counter  (0) 2021.01.12
Pythonic Code - asterisk  (0) 2021.01.12
Pythonic Code - Lambda & MapReduce  (0) 2021.01.11
Pythonic Code - Enumerate, Zip  (0) 2021.01.10
반응형

 

 

 

1. 중복을 허용하지 않는다.

s1 = set([1,2,3,3])
print(s1, '\n')
{1, 2, 3} 

 



2. 순서가 없다.

s2 = set("Hello")
print(s2, '\n')
{'e', 'l', 'H', 'o'} 

 

 

 


3. 교집합 구하기

s3 = set([1,2,3,4,5,6])
s4 = set([4,5,6,7,8,9])
print(s3 & s4, '\n')
{4, 5, 6} 

 

 

 


4. 합집합 구하기

print(s3 | s4, '\n')
{1, 2, 3, 4, 5, 6, 7, 8, 9} 

 

 

 



5. 차집합 구하기

print(s1 - s2, '\n')
{1, 2, 3} 

 

 

 

 

 



6. 집합에 값 한 개 추가하기

s1.add(7)
print(s1, '\n')
{1, 2, 3, 7} 

 

 

 

 


 


7. 집합에 여러 개 값 추가하기

s1.update([4,5,6])
print(s1, '\n')
{1, 2, 3, 4, 5, 6, 7} 

 

 

 


 



8. 특정 값 제거하기

s1.remove(2)
print(s1, '\n')
{1, 3, 4, 5, 6, 7} 

 

 

 

 

 

 

반응형
반응형

 

 

 

 

 

Ordered Dict

일반적인 Dictionary는 입력한대로 순서대로 저장하지 않는다.

Ordered Dict를 사용하면 입력한대로 순서대로 저장해준다.

 

 

 

Default Dict

딕셔너리에서 기본 값을 설정해주어서 키 값만 넣어주어도 밸류 값을 기본 값으로 설정해준다.

 

 

 

Counter

한 단어 안에 알파벳별로 몇 개가 들어있는지 조회해준다.

 

 

 

 

 

반응형

'AI > python' 카테고리의 다른 글

python 문자열 부분 일치, 앞부분 일치, 뒤부분 일치  (0) 2021.06.15
Pythonic Code - Set()  (0) 2021.01.15
Pythonic Code - asterisk  (0) 2021.01.12
Pythonic Code - Lambda & MapReduce  (0) 2021.01.11
Pythonic Code - Enumerate, Zip  (0) 2021.01.10
반응형

 

Asterisk

우리가 흔히 알고 있는 * 을 의미한다.

단순 곱셈, 제곱 연산, 가변 인자 활용 등 다양하게 사용된다.

 

가변 인자 활용 => 변수 여러 개를 packing하여 한번에 넘겨줄 때

def astarick_test(a, *args):
    print(a, args)
    print(type(args))

astarick_test(1,2,3,4,5,6)
def astarick_test(a, *args):
    print(a, args)
    print(type(args))

astarick_test(1,*(2,3,4,5,6))
1 (2, 3, 4, 5, 6)
<class 'tuple'>

 

*(2,3,4,5,6) = 2,3,4,5,6 이기 때문이다.

 

 

 

키, 밸류 값을 한번에 넘겨줄 때 => ** 을 쓴다.

def astarick_test(a, **karg):
    print(a, karg)
    print(type(karg))

astarick_test(1, b=2, c=3, d=4, e=5)
1 {'b': 2, 'c': 3, 'd': 4, 'e': 5}
<class 'dict'>

 

 

 

변수 여러 개를 unpacking할 때 

def astarick_test(a, args):
    print(a, *args)     # unpacking
    print(type(args))

astarick_test(1,(2,3,4,5,6))
1 2 3 4 5 6
<class 'tuple'>

 

 

 

 

이미 packing 되어있는 튜플에 asterisk를 하면 )

def asterisk_test(a, *args):
    print(a, args[0])
    print(type(args))

asterisk_test(1, (2, 3, 4, 5, 6))
1 (2, 3, 4, 5, 6)
<class 'tuple'>

 

args = ((2, 3, 4, 5, 6),) 가 된다. 따라서 args의 첫 번째 인덱스만 꺼내 주어야 한다.

 

 

 

 

일반적인 unpacking

a, b, c = ([1,2],[3,4],[5,6])
print(a,b,c)

data = ([1,2],[3,4],[5,6])      #unpacking
print(*data)
[1, 2] [3, 4] [5, 6]
[1, 2] [3, 4] [5, 6]

 

def asterick_test(a,b,c,d):
    print(a,b,c,d)

data = {"b":1,"c":2,"d":3}
asterick_test(10, **data)
10 1 2 3

 

 

for data in zip(*([1,2],[3,4],[5,6])):
    print(sum(data))
9
12

 

 

반응형

'AI > python' 카테고리의 다른 글

Pythonic Code - Set()  (0) 2021.01.15
Pythonic Code - Deque, Ordered Dict, Counter  (0) 2021.01.12
Pythonic Code - Lambda & MapReduce  (0) 2021.01.11
Pythonic Code - Enumerate, Zip  (0) 2021.01.10
Pythonic Code - List Comprehension  (0) 2021.01.10
반응형

 

 

 

 

 

Lambda는 함수를 다르게 쓴 것이라고 보면 된다.

f = lambda x, y: x + y
print(f(1,2))

f = lambda x: x ** 2
print(f(3))

f = lambda x: x / 2
print(f(4))

 

 

꼭 함수의 이름을 지정하지 않고도 사용할 수 있다.

print((lambda x: x+1)(5))

 

 

 

lambda에 필터 껴주기 

=> lambda에서 if 문 쓸 때에는 꼭 else도 써 주어야 한다.

# lambda에 필터 껴주기
a = list(map(lambda x: x ** 2 if x % 2 == 0 else x, ex))
print(a)
[1, 4, 3, 16, 5]

 

 

 

python 3에서는 list comprehension으로 편하게 쓸 수 있기 때문에 lambda의 사용이 권장되지 않는다.

b = [x ** 2 for x in ex]
print(b)
[1, 4, 9, 16, 25]

 

 

Reduce 

: 값을 하나하나 꺼내면서 수식 처리를 해 주는 것이다.

 

예시 ) 값을 하나하나 꺼내면서 더해준다.

# Reduce
from functools import reduce
print(reduce(lambda x,y: x+y, [1,2,3,4,5]))
15

 

 

 

예시 ) 값을 하나하나 꺼내면서 곱해준다.

def factorial(n):
    print(reduce(lambda x,y: x*y, range(1,n+1)))

factorial(4)
24

 

 

 

 

 

 

 

 

 

반응형

'AI > python' 카테고리의 다른 글

Pythonic Code - Deque, Ordered Dict, Counter  (0) 2021.01.12
Pythonic Code - asterisk  (0) 2021.01.12
Pythonic Code - Enumerate, Zip  (0) 2021.01.10
Pythonic Code - List Comprehension  (0) 2021.01.10
파이썬 기초 끝 ! + map 함수  (0) 2021.01.10
반응형

 

 

Enumerate는 리스트의 인덱스와 함께 값을 추출할 때 사용한다.

Zip은 여러 개의 리스트에서 각각의 값을 병렬적으로 가져올 때 사용한다.

 

Enumerate

for i,j in enumerate(['tic','tac','toe']):
    print(i,j)

myList = ['a','b','c','d']
print(list(enumerate(myList)))

myTuple = {i:j for i,j in enumerate('Apple Banana Computer Dictionary Eraser Food'.split())}
print(myTuple)
0 tic
1 tac
2 toe
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
{0: 'Apple', 1: 'Banana', 2: 'Computer', 3: 'Dictionary', 4: 'Eraser', 5: 'Food'}

 

 

 

 

Zip

alist = ['a1','a2','a3']
blist = ['b1','b2','b3']

for a, b in zip(alist, blist):
    print(a,b)
a1 b1
a2 b2
a3 b3

 

 

 

Zip 과 Enumerate를 같이 사용하면?

# zip + enumerate
for i, (a, b) in enumerate(zip(alist, blist)):
    print(i,a,b)
0 a1 b1
1 a2 b2
2 a3 b3

이 때, (a,b)에서 괄호를 꼭 붙여 주어야 한다!!

 

 

 

리스트나 튜플에서 각각의 값을 꺼내어 새로운 리스트를 만들 수도 있다.

# 리스트 활용
cList = [1,2,3]
dList = [10,20,30]
eList = [100,200,300]

result = [sum(x) for x in zip(cList, dList, eList)]
print(result)

# 튜플 활용
aTuple = (1,2,3)
bTuple = (10,20,30)
cTuple = (100,200,300)

result = [sum(x) for x in zip(aTuple, bTuple, cTuple)]
print(result)
[111, 222, 333]
[111, 222, 333]

 

 

 

 

 

반응형

+ Recent posts