다른 개발 언어 (특히 C언어 등)을 알고 있다는 가정하에,
다른 언어와 어떤 차이점이 있는지... Python 문법의 특징을 살펴 본다.
각 항목에서 궁금한 사항은, 본 포스팅의 가장 하단에 Python Shell에서 테스트 해보자.
그래야, 체감하고 느끼면서 장기기억으로 전환될 수 있다. (하단 참조)
○ 변수는 별도 선언 없이 바로 사용할 수 있다. (그러나, 가급적 명시/초기화 하는게 좋다.)
a = 1
b = 1
위 변수 선언은 아래와 같이 한번에 Assign 할 수 있다. 이것은 반복형(List, tuple) 등을 Unpacking 하는 방법인데 나중에 거론 하도록 하자. 아무튼 아래와 같이 한꺼번에 할당 할 수 있다. (※ 내부적으로는 tuple을 사용하여 Assign 하는 것이다. )
a,b = 1,1
Python 에서는 int, float, string 등의 기본 변수 타입 이외에, list, tuple, dictionary 등의 변수 타입이 있습니다.
이 때, 일반적으로 1단계 들여쓰기에 4공백을 사용합니다. 그러나, 꼭 4공백을 지켜야하는 것은 아닙니다. Pycharm 등 Python 전용 IDE를 사용하면, 알아서 들여쓰기 해 줍니다.
if문은 별다른 특이 사항은 없습니다. 다만, 전술한 바와 같이 문장 끝에 오는 Colon ( : ) 과 들여쓰기만 유의 하시면 된다.
if n==1 :
print(“1”)
elif n==2 :
print(“2”)
else:
print( n)
<주의> python 버전에 따라 소폭 차이가 있다.
예를 들면, python 2.7 이하에서 print문은 괄호 없이 사용이 가능한 반면, Python3.x는 괄호가 필수 이다.
# python 2.x
print a
# python 3.x
print(a)
다음은, C/C++의 For문과 Python의 For문을 비교 용도로 보여준 예제 입니다.
# C/C++
# for (i=0; i<10; i++)
# printf(i)
# python
for i in range(10):
print(i)
위, 문장은 아래와 같은 의미를 가집니다.
이 때 주의할 점은,
위 예를 풀어서 다시 쓰면 다음과 같습니다.
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # range(10)
for i in a:
print(i)
#은 주석을 의미함
따라서, python에서 반복 순서 또는, 반복 간격 등을 조절하기 위해서는, 변수의 list를 변경하면 됩니다.
a = [0, 2, 4, 6, 8 ] # range(0,10,2)와 동일
for i in a:
print(i)
앞서 살펴본 바와 같이, Python에서 List, Tuple 등 Array Type의 변수형이 매우 중요합니다. 특히, 데이터 분석의 경우, Data가 Array/List/Tuple 등에 저장되기 때문에, 이들에 대한 변수를 다루는 것은 데이터 분석 능력과 직/간접적으로 영향을 받습니다.
일반 프로그래밍 언어와 Python과의 주된 차이점은 List Comprehension이라는 부분에 있습니다. 보통 Pythonic 이라고 표현되는 대표적인 예입니다. 이러한 표현들로 파이썬(Python)은 축약문법을 많이 사용하곤 합니다.
바로전 절에서 사용한 For문/반복문을 Python은 다음과 같은 한줄(Single Line)으로 표현할 수 있습니다. (자주 싱글라인으로 표현합니다.)
[ i for i in range(10) ]
결과:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
또한 이는 리스트형으로 만들어서, 변수에 바로 저장할 수도 있습니다.
list_a = [ i for i in range(10) ]
또한 아래와 같이 반복문 내부에 조건식을 포함할 수 있습니다.
[ i for i in range(10) if i%2==0 ] # 짝수만 출력
결과:
[0, 2, 4, 6, 8 ]
ㅇ 아래와 같이 반복문에 조건식을 부여 할 수 있습니다.
a = [ i if i%2==0 else ‘odd’ for i in range(10) ]
print(a)
결과:
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd']
함수의 대한 정의는 아래와 같이, " def " 사용하여 정의 합니다.
def func_name(인자):
...
함수 내용
...
return 반환값
함수정의 (def) 는 아래와 같이 함수명, 인자를 포함하여 선언하고, 들여쓰기를 포함하여 블럭을 설정하며, 내부 statement를 기술한다.
(※ 이 때, 함수의 끝에 Colon (:) 이 포함되어야 함에 유의)
def func( n ) :
print( n )
return n+1
파이썬에서는 간략화/단순화를 위해서 익명함수 (인라인 함수로 많이 사용)를 사용한다.
파이썬 또한 Functional Programming의 영향을 받아서, "모든 것은 개체"라는 기본 이념을 가지고 있다. 따라서, Lambda 함수 또한 개체이다.
# CASE 1: func 함수선언
def func(x):
return x+1
# CASE 2: lambda 함수 func
func = lambda x : x+1
Lambda 함수는 함수정의 없이 약식으로 사용할 수 있으며, 다수의 데이터에 반복적인 연산을 수행할 때 많이 사용된다.
다음은 Labmda 함수가 가장 자주 활용되는 경우의 예이다.
a = range(10)
map( lambda x: x**2, a )
# 결과:
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
※ map 함수는, 연속형 변수의 element 를 하나씩 꺼내서, 함수의 Input으로 하나씩 넣어준다.
위 코드에서는, [0, 1, 2, .... 9]의 내용으로 구성된 변수 a의 원소를 하나씩 꺼내어서 Lambda 함수의 입력으로 넣어 준다.
Python의 가장 특징적인 Data Type은 List와 Tuple이라 할 수 있다.
LiST
List (리스트형)
# List의 생성
mylist = [ 0, 1, 2, 3, 4, 5]
# 내포된(Nested) List 생성
mylist2 = [ [0, 1, 2], [3,4,5] ]
리스트 추가
mylist + [ 6 ,7, 8] # 결과 : [0, 1, 2, 3, 4, 5, 6, 7, 8]
mylist2 + [6,7,8] # 결과 : [[0, 1, 2], [3, 4, 5], 6, 7, 8]
mylist2 + [ [6,7,8] ] # 결과 : [ [0, 1, 2], [3, 4, 5], [6, 7, 8] ]
mylist.append(9) # 결과 : [0, 1, 2, 3, 4, 5, 9 ]
리스트의 곱
mylist = [0,1,2]
mylist *3 # 결과 : [0, 1, 2, 0, 1, 2, 0, 1, 2 ]
[ 리스트의 인덱싱/ 슬라이싱 ]
List에서 일부 원소를 지명하는 것을 인덱싱이라고 하며, 일부만을 선택하여 불러오는 것을 슬라이싱이라고 하낟.
mylist = range(10) # 결과 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
mylist [5] # 결과 : 4
mylist[2:5] # 결과 : [ 2, 3, 4 ]
mylist[5:] # 결과 : [5, 6, 7, 8, 9]
mylist[:5] # 결과 : [0, 1, 2, 3, 4]
mylist[-1] # 결과 : 9
mylist[0:6:2] # 결과 : [0, 2, 4]
mylist[::2} # 결과 : [0, 2, 4, 6, 8]
mylist[::-1] # 결과 : [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]
[ 기타 리스트 추가/삭제 등 ]
insert / extend / copy / remove / pop / clear / reverse, sort
튜플 (tuple)
import numpy as np
import pandas as pd
a = 10
# 1. 변수 선언
a,b = 1,1
# 3. 조건문
if n==1 :
print(“1”)
elif n==2 :
print(“2”)
else:
print( n)
# 4.1 반복문-1
for i in range(10):
print(i)
# 4.2 반복문-2
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # range(10)
for i in a:
print(i)
# 4.3 반복문-3
a = [0, 2, 4, 6, 8 ] # range(0,10,2)와 동일
for i in a:
print(i)
# 5.1 List Comprehension
[ i for i in range(10) ]
list_a = [ i for i in range(10) ]
[ i for i in range(10) if i%2==0 ] # 짝수만 출력
a = [ i if i%2==0 else ‘odd’ for i in range(10) ]
print(a)
# 6. 함수
def func( n ) :
print( n )
return n+1
# 7. 익명함수
# CASE 1: func 함수선언
def func(x):
return x+1
# CASE 2: lambda 함수 func
func = lambda x : x+1
a = range(10)
map( lambda x: x**2, a )
# 8. List/Tuple
# List의 생성
mylist = [ 0, 1, 2, 3, 4, 5]
# 내포된(Nested) List 생성
mylist2 = [ [0, 1, 2], [3,4,5] ]
mylist + [ 6 ,7, 8] # 결과 : [0, 1, 2, 3, 4, 5, 6, 7, 8]
mylist2 + [6,7,8] # 결과 : [[0, 1, 2], [3, 4, 5], 6, 7, 8]
mylist2 + [ [6,7,8] ] # 결과 : [ [0, 1, 2], [3, 4, 5], [6, 7, 8] ]
mylist.append(9) # 결과 : [0, 1, 2, 3, 4, 5, 9 ]
mylist = [0,1,2]
mylist *3 # 결과 : [0, 1, 2, 0, 1, 2, 0, 1, 2 ]
mylist = range(10) # 결과 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
mylist [5] # 결과 : 4
mylist[2:5] # 결과 : [ 2, 3, 4 ]
mylist[5:] # 결과 : [5, 6, 7, 8, 9]
mylist[:5] # 결과 : [0, 1, 2, 3, 4]
mylist[-1] # 결과 : 9
mylist[0:6:2] # 결과 : [0, 2, 4]
mylist[::2} # 결과 : [0, 2, 4, 6, 8]
mylist[::-1] # 결과 : [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]
<-
) to create the variable a
.
[클라우드 데이터 분석 플랫폼 비교-1] 구글 코랩 (Google Colab) vs. MS Azure Notebook (1) | 2020.05.18 |
---|---|
[개발] 온라인 IDE - 개발 환경 구축 없어 어디서나 웹브라우저로 개발하기 (7) | 2020.05.09 |
[개발] 코딩시험 대비 - 웹 IDE(구름IDE)로 개발(Coding)환경을 구축해 보자. (4) | 2020.04.30 |
애드몹(adMob) 테스트 디바이스 (testDevice) 등록 (1) | 2020.04.22 |
Single Dex size 에러 - single dex file cannot exceed 64K (2) | 2020.03.29 |
댓글 영역