파이썬 소개 및 기본 문법 사용 방법입니다.

IT/빅데이터|2020. 8. 25. 09:13

최근에 파이썬을 배우고 있습니다. 파이썬은 다양한 프로그래밍을 쉽고 간편하게 만들 수 있는 유용한 프로그램 언어예요. 파이썬으로 빅데이터 분석을 하고자 열심히 배우고 있는데 파이썬에 관심있을 분들을 위해 간단히 파이썬이 무엇인지, 어떤 문법을 사용하는지 정리해 보았습니다.

 

 

파이썬

 

파이썬(영어: Python)은 1991년 프로그래머인 귀도 반 로섬(Guido van Rossum)이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디 〈Monty Python's Flying Circus〉에서 따온 것이다. 파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델을 가지고 있다. C언어로 구현된 Cython 구현이 사실상의 표준이다.[출처 : 위키백과]

 

 

아나콘다

 

아나콘다(Anaconda)는 패키지 관리와 디플로이를 단순케 할 목적으로 과학 계산(데이터 과학, 기계 학습 애플리케이션, 대규모 데이터 처리, 예측 분석 등)을 위해 파이썬과 R 프로그래밍 언어의 자유-오픈 소스 배포판이다. 패키지 버전들은 패키지 관리 시스템 conda를 통해 관리된다. 아나콘다 배포판은 1300만 명 이상의 사용자들이 사용하며 윈도우, 리눅스, macOS에 적합한 1,400개 이상의 유명 데이터 과학 패키지가 포함되어 있다.[출처 : 위키백과]

 

 

 

1. Number(숫자 자료형)

print(5 + 6) # 11
print(5 - 2) # 3
print(3 * 8) # 24
print(3 ** 3) # 27 제곱
print(8 / 2) # 4.0 float형
print(8 // 2) # 4 int형
print(8 % 3) # 2 나머지

 

 

2. String(문자열 자료형)

test = "Hello World!"
print(test) # Hello World!
test = 'Hello!'
print(test) # Hello!
test = 'I don\'t like Cake'
print(test) # I don't like Cake
test = "I don't like Cake"
print(test) # I don't like Cake

 

””,’’ 로 감싸진 문자열을 string으로 인식합니다. 싱글쿼터 혹은 더블쿼터를 문자열로 사용하려면 앞에 \ 필요합니다.

test = r'C:\Test'
print(test) # C:\Test

 

r’’ 로 문자열을 감싸주게 되면 raw라는 뜻으로 아무 의미없는 문자열

first = 'Like'
last = 'Cake'
print(first + last) # Like Cake
print(last * 3) # CakeCakeCake

+ 기호를 이용해서 문자열을 합치는 것이 가능. * 기호를 이용해서 문자열 반복.

 

 

 

3. Slicing String(문자열 슬라이싱)

test_str = 'Apple'
print(test_str[0]) # A
print(test_str[1]) # p
print(test_str[-1]) # e
print(test_str[-2]) # l

* List의 인덱스 부분에 음수를 넣어서 오른쪽부터 데이터 호출하는 구문입니다.  단 주의해야 할 것은 프로그래밍에서 음수로 인덱싱할 경우에는 0부터 시작이 아니라 -1부터 시작하는 인덱싱 구조를 갖고 있다는 점을 주의하세요.

 

 

print(test_str[2:3]) # pl
print(test_str[3:4]) # le
print(test_str[:3]) # App
print(test_str[3:]) # le

위의 코드처럼 범위를 인덱스로 지정해서 호출하는 방법도 가능합니다. 단, 콜론 앞의 숫자는 포함되지만 뒤의 숫자는 포함되지 않는 점을 주의하세요 시작지점을 지정하지 않으면 처음부터 콜론 뒷 부분 숫자의 인덱스까지 표시되고, 끝지점을 지정하지 않으면 콜론 앞 부분 숫자부터 끝까지 표시됩니다.

 

4. if, elif, else(조건문)

name = 'Applejuice'
if name is 'Helloworld':
    print('Welcome')
elif name is 'Byeworld':
    print('Goodbye')
else:
    print('ByeBye')

 

파이썬(python)의 조건문은 아래와 같은 방식으로 구성합니다. 

if 조건문:
    코드
elif 조건문2:
    코드
else:
    코드

보통의 일반적인 프로그램밍(C언어처럼)은 조건문에서 else if를 쓰는데 파이썬에서는 else if가 아니라, elif를 사용한다는 점도 차이점이니 주의하세요.

 

 

5. List(리스트 자료형)

a = [] # a = list()와 동일
b = [1, 3, 5]
c = ['Apple', 'Melon', 'Tomato', 'Banana']
d = [7, 9, ['Melon', 'Banana']]

List 안에는 여러가지 자료형 저장. 

 

print(b[-1]) # 5
print(c[-2]) # Tomato
print(d[-1][0]) # Melon

이중 List에서 인덱싱은 다음과 같이수행

 

# List 값 수정

test = [1, 2, 3, 4, 5]
test[3] = 6
print(test) # [1, 2, 3, 6, 5]

이렇게 인덱스를 지정해서 직접 값 변경 가능

 

# List 연속된 값으로 변경

test = [1, 2, 3, 4, 5]
test[2:3] = ['a', 'b', 'c']
print(test) # [1, 2, 'a', 'b', 'c', '4', '5']

2이상 3미만의 인덱스 부분에 a,b,c List를 변경.

 

# List 요소 삭제

test = ['a', 'b', 'c', 'd', 'e']
test[2:4] = []
print(test) # ['a', 'b', 'e'] # del 함수 사용
test = ['a', 'b', 'c', 'd', 'e']
del test[2]
print(test) # ['a', 'b', 'd', 'e']

del 함수를 사용해서 데이터 삭제 가능

 

test = ['a', 'b', 'c', 'd', 'e']
del test[2:4]
print(test) # ['a', 'b', 'e']

인덱스를 범위로 지정 가능

 

 

List 내장 함수들!

test = [1, 2]
test.append(3) # 맨 뒤에 값 추가
print(test) # [1, 2, 3]

append(x) 함수는 인자를 1개밖에 받지 않기 때문에 여러개의 인자를 넘겨줄 경우 에러 발생

 

test = [3, 1, 2, 5, 4]
test.sort()
print(test) # [1, 2, 3, 4, 5]
test.sort(reverse=True)
print(test) # [5, 4, 3, 2, 1]

sort() 함수는 List를 자동으로 정렬. 역순으로 정렬하기 위해서는 sort 함수에 reverse 옵션을 True로 설정.

 

test = [3, 1, 2]
test.reverse()
print(test) # [2, 1, 3]

reverse() 함수는 현재의 List를 역순으로 변경(정렬 하지 않음)

 

test = [1, 2, 3, 4, 5]
print(test.index(3)) # 2
print(test.index(5)) # 4

index(x) 함수는 x 라는 값이 있는 경우 , x 의 인덱스를 반환해주는 함수.

 

test = [1, 2, 3, 4, 5]
test.insert(0, 6)
print(test) # [6, 1, 2, 3, 4, 5]

insert(x, y) 함수는 x 위치에 y 라는 값을 삽입해주는 함수.

 

test = [1, 2, 3, 4, 3]
test.remove(3)
print(test) # [1, 2, 4, 3]

remove(x) 함수는 첫 번째로 나오는 x 라는 값을 List에서 삭제해주는 함수. 

 

test = [1, 2, 3]
print(test.pop()) # 3
print(test) # [1, 2]

pop() 함수는 List의 가장 마지막 인덱스의 값을 반환해주고 그 값을 삭제해주는 함수. 

 

test = [1, 2, 3, 1, 1]
print(test.count(1)) # 3

count(x) 함수는 x 라는 값이 List 안에 몇 개나 있는지 반환해주는 함수.

 

test = [1, 2, 3]
test.extend([4, 5, 6])
print(test) # [1, 2, 3, 4, 5, 6]

extend(x) 함수는 x 부분에 List를 받아서 원래의 List와 병합시켜주는 함수. List에서는 위와 같은 내장 함수들을 사용. 여기에  len() 함수로 List 값들의 개수 확인도 가능.

 

 

6. Tuple(튜플 자료형)

Tuple과 List는 유사한 자료형. List는 [] 대괄호로 묶이지만 Tuple은 () 소괄호 사용.

tp1 = ()
tp2 = (1,)
tp3 = (1, 2, 3, 4, 5)
tp4 = (1, 2, (3, 4, 5))
tp5 = 1, 2, 3

Tuple의 선언 시 1개의 요소만을 가질때 튜플은 tp2 와 같이 뒤에 반드시 콤마(,) 가 와야 함. 또한 tp5 처럼 괄호를 생략해도 됨. Tuple과 List의 가장 큰 차이점은 Tuple은 값을 변경할 수 없음Tuple은 인덱싱, 슬라이싱, 병합, 반복 모두 가능.

tp1 = (1, 2, 3)
tp2 = (4, 5, 6)
print(tp1[2]) # 3
print(tp1[1:]) # (2, 3)
print(tp1 + tp2) # (1, 2, 3, 4, 5, 6)
print(tp2 * 2) # (4, 5, 6, 4, 5, 6)

 

 

 

7. Dictionary(딕셔너리 자료형)

Dictionary는 키=값 형태로 이루어진 자료형. 대응 관계를 나타내는 자료형을 연관 배열 혹은 Hash라고 함. 대표적인 예로는 루비의 Hash와 C#의 Dictionary가 있음.

dic1 = dict()
dic2 = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
dic3 = dict([('name', 'Android'), ('phone', '010-1234-5678')])
dic4 = dict(firstname='Steven', lastname='Hwang')
dic5 = {'ls': ['a', 'b', 'c']}
print(dic2) # {'k1': 'v1', 'k3': 'v3', 'k2': 'v2'}
print(dic2['k2']) # v2
print(dic3) # {'phone': '010-1234-5678', 'name': 'Android'}
print(dic3['name']) # Android
print(dic4) # {'firstname': 'Steven', 'lastname': 'Hwang'}
print(dic4['firstname']) # Steven
print(dic5['ls']) # ['a', 'b', 'c']

빈 Dictionary를 만들땐 dict() 함수를 사용 후  value 값을 호출할 때는 Dictionary이름[‘키값’] 으로 호출. 또한 Dictionary의 값으로 List도 넣을 수 있다.

 

test = {1: 'first'}
test[2] = 'second'
print(test) # {2: 'second', 1: 'first'}

Dictionary는 간단하게 키값을 지정해주고 추가.

 

test = {1: 'first', 2: 'second', 3: 'third'}
del test[2]
print(test) # {1: 'first', 3: 'third'}

삭제는 del() 함수를 사용.

 

test = {'name': 'Steven', 'nickname': 'Android', 'birthday': '1111'}
print(test.keys()) # dict_keys(['name', 'nickname', 'birthday'])
print(test.values()) # dict_values(['Steven', 'Android', '1111'])
print(test.items()) # dict_items([('nickname', 'Android'), ('name', 'Steven'), ('birthday', '1111')])

keys(), values() 함수를 통해서 딕셔너리의 key 혹은 value를 dict_keys 혹은 dict_values 객체 반환. items() 함수는 key와 value를 Tuple을 사용해서 묶은 값을 dict_items 라는 객체로 반환.

 

test = {'name': 'Steven', 'nickname': 'Android', 'birthday': '1111'}
test.clear()
print(test) # {}

clear() 함수를 이용해서 모두 삭제.

 

test = {'name': 'Steven', 'nickname': 'Android', 'birthday': '1111'}
print(test.get('no_key')) # None
print(test.get('name')) # Steven
print(test['name']) # Steven
print(test['no_key']) # Error

test[‘no_key’] 의 경우에는 Error를 내뱉지만 test.get(‘no_key’)는 None 객체를 반환하기 때문에 get(x, y) 함수를 사용할 것.

 

test = {'name': 'Steven', 'nickname': 'Android', 'birthday': '1111'}
print('name' in test) # True
print('no_key' in test) # False

 

8. Set(집합 자료형)

집합을 나타내기 위한 자료형 임. 중복을 허용하지 않고, 순서가 없음.

s = set([1, 2, 3, 4, 5])
print(s) # {1, 2, 3, 4, 5}
hello = set('Hello World!')
print(hello) # {' ', 'H', '!', 'e', 'l', 'o', 'd', 'W', 'r'}

Set은 Dictionary와 비슷하게 순서가 없는 자료형이기 때문에 인덱싱이 불가능. 만약 Set에서 인덱싱을 하고 싶다면 List나 Tuple로 형 변환을 시킨 뒤에 해야 함. Set은 집합 자료형이다보니 교집합, 차집합, 합집합 등 집합 연산에 있어 매우 유리.

 

set1 = set([1, 2, 3, 4, 5, 6])
set2 = set([5, 6, 7, 8, 9, 0])
print(set1 & set2) # {5, 6}
print(set1 | set2) # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1 - set2) # {1, 2, 3, 4}
print(set2 - set1) # {0, 8, 9, 7}

 

위의 코드는 아래와 같이 사용 가능

 

set1 = set([1, 2, 3, 4, 5, 6])
set2 = set([5, 6, 7, 8, 9, 0])
print(set1.intersection(set2)) # {5, 6}
print(set1.union(set2)) # {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1.difference(set2)) # {1, 2, 3, 4}
print(set2.difference(set1)) # {0, 8, 9, 7}

이렇게 Set 자료형의 내장 함수를 통해서 교집합, 차집합, 합집합 계산.

 

set1 = set([1, 2, 3, 4])
set1.add(4)
print(set1) # {1, 2, 3, 4}
set1.add(5)
print(set1) # {1, 2, 3, 4, 5}

add(x) 함수를 통해서 값을 추가 가능. 기존에 있던 값을 추가할 경우에는 추가되지 않음.

 

set1 = set(1, 2)
set1.update([3, 4, 5])
print(set1) # {1, 2, 3, 4, 5}

update(x) 함수를 통해서 여러 개의 값을 추가 가능. x의 위치에는 iterable, 즉 반복 가능한 자료형이 와야함. 

 

set1 = set([1, 2, 3, 4, 5])
set1.remove(3)
print(set1) # {1, 2, 4, 5}

특정 값을 제거하고 싶을 경우에는 remove(x) 함수를 사용해야 함. x의 위치에는 제거하고 싶은 값을 입력해야 함

댓글()