[python] 심화

2021. 4. 27. 23:58Python/문법

Ver. Jupyter Notebook (Anaconda3)

▶ 리스트 컴프리헨션(list comprehension)

# 각각의 요소에 제곱을 할 경우
A = [1,2,3,4,5,6,7,8,9,10]
B1 = []
for i in A:
	B1.append(i**2)			# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

B2 = [x**2 for x in A]			# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

B3 = [x**2 for x in range(1,11)]	# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

▶ input 함수

A = input('크롤링할 데이터는 무엇입니까? ')
>>> 크롤링할 데이터는 무엇입니까? 대전 맛집

A				# '대전 맛집'

▶ map 함수: 반복 대상

a, b = map(int, [1.2, 8.9]
print(a)			# 1
print(b)			# 8

c, d = map(float, '34')
print(c)			# 3.0
print(d)			# 4.0

▶ split 함수

'1 3 5'.split()			# ['1', '3', '5']

A = list(map(int, input().split()))
>>> 2 4 6
A				# [2, 4, 6]

▶ 람다 표현식: 익명 함수 (일회용)

# (lambda 매개변수1, 매개변수2 : 명령문)(인자1, 인자2)
def add(a, b):
	return a+b
add(1, 3)				# 4

(lambda a, b : a+b)(1, 3)		# 4

# 람다 함수가 유용한 상황: 함수 자체를 입력으로 받는 또 다른 함수가 있을 때 굳이 새로운 함수를 정의하지 않고도 함수를 이용 할 수 있다.
A = [('홍길동' , 50), ('이순신', 32), ('아무개', 74)]

# 리스트를 인자로 받아 1번째 요소를 반환해주는 함수
def B(x):
	return x[1]
B(A)					# ('이순신', 32)

# sorted: 정렬
sorted(A, key=B)			# [('이순신', 32), ('홍길동', 50), ('아무개', 74)]

sorted(A, key=lambda x : x[1])		# [('이순신', 32), ('홍길동', 50), ('아무개', 74)]

# map 함수를 이용하여 여러개의 리스트에 람다 함수 적용하기
list1 = [1,2,3,4,5]
list2 = [6,7,8,9,10]
C = map(lambda a,b : a+b, list1, list2)
list(C)					# [7, 9, 11, 13, 15]

▶ for문으로 동적 변수

for i in range(1, 3):
	globals()['변수_{}'.format(i)] = i+2
print(변수_1)				# 3
print(변수_2)				# 4

▶ class

class A:
	z = 1
	def __init__(self):
		self.x = 10
	def f1(self, y):
		return self.x + y

a = A()
a.z				# 1
a.x				# 10
a.f1(20)			# 30

a.z = a.z + 2
A.z				# 1
a.z				# 3

# 클래스 상속
class A:
	def __init__(self):
		self.x = 10
class B(A):
	def f1(self,y):
		return self.x + y

b = B()
b.x				# 10
b.f1(20)			# 30

 

'Python > 문법' 카테고리의 다른 글

[python] kaggle, boston marathon  (0) 2021.04.29
[python] 외부데이터  (0) 2021.04.29
[Python] 정리  (0) 2021.04.29
[python] pandas  (0) 2021.04.28
[python] 기초  (0) 2021.04.27