# 리스트 함수



일전 문자열 내장함수 강의를 보면 알 수 있듯이 리스트도 문자열과 마찬가지로 리스트뒤에 "."을 사용하여 내장함수를 사용할 수 있습니다.


1. append


append 함수는 리스트에 요소를 추가할 때 사용합니다. append에 의하여 추가된 요소는 리스트의 맨 뒤에 저장됩니다. 값이 존재하지 않는 빈리스트일 경우에도 마찬가지로 첫번째 인자부터 새로 생성됩니다. 


1
2
3
4
5
6
7
8
#!/usr/bin/python36
arr = [1,2,3]
arr.append(4)
 
print(arr)
 
#결과값
[1234]
cs



2. extend


append는 유용하지만 여러 원소를 한번에 집어 넣거나 리스트끼리 합치는것은 불가능 합니다. 이런 경우는 어떻게 해결할까요? 바로 extend를 사용하시면됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/python36
arr = [1,2,3]
arr.extend([3,4,5,6,7])
 
print(arr)
 
arr = [1,2,3]
arr = arr + [3,4,5,6,7]
 
print(arr)
#결과값
[12334567]
[12334567]
cs


extend함수는 사실 list의 더하기 연산과 크게 다르지 않습니다.  + 연산자가 편하신 분은 +를 사용하고 extend를 쓰고 싶은 분은 extend를 사용하면 됩니다.


참고 : https://stackoverflow.com/questions/3653298/concatenating-two-lists-difference-between-and-extend


3. reverse


리스트를 생성하고 인자의 순서를 반대로 뒤집고 싶을 경우에는 어떻게 하면 될까요? 해답은 바로 reverse 함수에 있습니다.


1
2
3
4
5
6
7
#!/usr/bin/python36
arr = [1,2,3]
arr.reverse()
print(arr)
 
#결과값
[3,2,1]
cs


4. sort


뒤집는 것도 좋지만, 리스트 안의 값을 정렬하고 싶을경우에는 어떻게 하냐고요? sort함수를 사용하시면 됩니다.

sort함수는 리스트를  정렬해주는 함수입니다. 기본적으로 오름차순으로 정렬해주며 reverse라는 인자의 값을 True로 바꿔주면 내림차순으로 정렬해줍니다.

추가적으로 sorted 함수는 arr의 값에 영향을 미치지 않으면서 바꿀 수 있는 내장함수입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/python36
arr = [5,2,7]
print(sorted(arr))
 
print(arr)
 
arr.sort()
print(arr)
 
arr.sort(reverse=True)
print(arr)
 
#결과값
[257#sorted
[527#arr
[257#sort
[752#sort-reverse
cs



5. remove


remove함수는 리스트에 존재하는 인자를 제거하는 함수입니다. 인자의 값이 중복되는 상황이면 인덱스가 낮은 수 먼저 제거합니다.


1
2
3
4
5
6
7
8
9
#!/usr/bin/python36
arr = [1,5,2,7,1]
arr.remove(1)
print(arr)
arr.remove(1)
print(arr)
#결과값
[5271]
[527]
cs


6. insert


위에서 append를 언급했을 때 분명히 맨앞에서 부터 추가하는 방법이 궁금하셨던 분들 계실겁니다. insert 함수는 인자로 인덱스와 값을 받아서 해당인덱스에 값을 추가하는 방식으로 구동됩니다.


1
2
3
4
5
6
7
8
9
10
#!/usr/bin/python36
arr = [1,5,2,7,1]
arr.insert(0,10)
print(arr)
arr.insert(100,10)
print(arr)
 
#결과값
[1015271]
[101527110]
cs

insert함수의 인덱스를 리스트의 길이보다 크게 주었을 경우에는 append와 똑같은 위치에 인자가 삽입됩니다. 그리고 인덱스 값으로 음수를 주면 뒤에서 부터 삽입이 가능합니다.



7. pop


자료구조를 구성할 때 단골손님처럼 쓰이는 함수, pop입니다.

pop는 기본적으로 맨뒤의 인자를 remove하면서 동시에 return하는데요 함수 인자값으로 인덱스를 넣는 것이 가능하여 원하는 위치의 값을 remove하면서 return하는 것이 가능합니다.


1
2
3
4
5
6
7
8
9
10
#!/usr/bin/python36
arr = [1,5,2,7,1]
print(arr.pop())
print(arr.pop(0))
print(arr)
 
#결과값
1
1
[527]
cs


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

[python] 튜플과 Immutable  (0) 2019.02.14
[python] 딕셔너리(dictionary)  (0) 2019.02.13
[python] 리스트와 Shallow Copy  (0) 2019.02.10
[python] 문자열 함수  (0) 2019.02.09
[python] 문자열  (0) 2019.02.07

# 파이썬 리스트



리스트란 여러가지 데이터를 저장하는 자료구조입니다. 리스트를 이용하면 숫자나 문자열 등의 데이터를 다량의 변수를 선언하지 않고도 간단하게 표현할 수 있습니다.

무엇보다 Python에서의 리스트는 자료형에 구애받지 않고 자료형에 상관없이 한개의 리스트에 혼합하여 저장할 수 있는 장점이 있습니다.


1. 리스트의 생성 및 데이터 저장


1
2
3
4
5
6
arr1 = [1,2,3,4,5# ok
arr2 = ["a","b","c","d"# ok
arr3 = ["1",2,"3",4,"babo"# ok
arr4 = [1,2,[3,4,5,6]] # ok
arr5 = [] # 빈 리스트 생성
arr6 = list() # 빈 리스트 생성
cs



2. 인덱싱


리스트는 문자열과 같이 인덱싱을 적용하는것이 가능합니다. 리스트의 첫번째 요소를 0번 인덱스로 지정하고 마지막요소에 리스트의 크기-1 인덱스를 지정합니다.

- 참고 : 마지막 인덱스는 -1로 표현하고 1씩 감하여 이전 인덱스를 표현합니다.


1
2
3
4
5
arr = [1,2,3,4,5]
# a[0] == 1
# a[4] == 5
# a[-1] == 5
# a[-2] == 4
cs


만약, 리스트안에 다중으로 리스트가 들어있는 경우에는 인덱싱을 두번하여 중첩 리스트안에 있는 데이터에 접근할 수 있습니다.


1
2
3
arr = [1,2,[1,2,3]]
# arr[-1] == [1,2,3]
# arr[-1][-1] == [3]
cs



3. 슬라이싱


리스트는 문자열과 마찬가지로 인덱싱 뿐만아니라 슬라이싱 또한 가능합니다.  범위를 지정하여 시작 인덱스의 요소부터 마지막 인덱스의 요소로 구성된 리스트로 분할합니다.


1
2
3
arr=[1,2,3,4,5]
# arr[0:2] = [1,2]
# arr[2:] = [3,4,5]
cs


4. 리스트 요소 수정


리스트의 데이터를 변경하고 싶을 경우에는 해당 인덱스에 대입연산자를 사용하여 데이터를 삽입하면 됩니다.


1
2
3
arr = [1,2,3,4,5]
arr[0= 5
# arr == [5,4,3,2,5]
cs




# 객체의 복사


파이썬에서는 리스트도 객체에 해당하기 때문에 복사를 하게되면 바로보는 객체가 동일하기 때문에 두개의 리스트 중 하나만 변경해도 나머지 하나가 동일하게 수정되는 현상이 발생합니다.


1. shallow copy(얕은 복사)


1
2
3
4
5
6
7
8
9
10
11
= [1234]
= a
print(b)
b[2= 5
print(b)
print(a)
 
#결과값
[1234]
[1254]
[1254]
cs


a라는 변수를 선언하고 리스트를 만들어 a에 할당하면 a는 리스트객체의 주소가 저장된 변수가 됩니다.

그럼 a라는 변수의 값을 b라는 인자에 할당하였을 경우, b는 a와 같은 객체의 주소가 저장된 변수가 되는걸까요? 정답은 예,그렇습니다. b를 불러와 인덱스 2번의 값을 5로 변경하면, a에도 똑같이 적용되어 a의 값이 1,2,5,4가 되는 것을 위의 코드를 통하여 알 수 있습니다.



리스트는 값을 대입하면 값에 대한 메모리가 새로이 할당되는 것이 아닌 기존 값의 메모리 주소를 공유하기 때문에 발생하게 됩니다. 리스트 같은 경우 리스트 자체뿐만 아니라 리스트 내 요소들도 같은 주소를 공유하고 있습니다. 이를 Shallow Copy(얕은 복사)라고 부릅니다.



2. Deep Copy(깊은 복사)


이러한 현상을 방지하기 위해서는 Deep copy를 사용하여 복사하면 됩니다. 방법은 간단합니다. 기본라이브러리인 copy를 사용하는 방법이 있지만 더욱 간단한 사용을 위해 다른방법을 설명드리겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#1번 방법
= [1234]
= a[:]#리스트 슬라이싱
print(b)
b[2= 5
print(b)
print(a)
 
#2번 방법
= [1234]
= list(a)#리스트 내장함수사용
print(b)
b[2= 5
print(b)
print(a)
 
#결과값(1번과 2번 동일)
[1234]
[1254]
[1234]
cs


간단하게 리스트를 슬라이싱하여 대입하면 shallow copy가 일어나지 않습니다. 또 list 내장함수를 사용하면 Deep copy가 진행되어 리스트 복사문제를 해결 할 수 있습니다.

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

[python] 딕셔너리(dictionary)  (0) 2019.02.13
[python] 리스트 함수  (0) 2019.02.11
[python] 문자열 함수  (0) 2019.02.09
[python] 문자열  (0) 2019.02.07
[python] 기본자료형 - 숫자  (0) 2019.02.07

# 파이썬 문자열 함수



안녕하세요 코드사기꾼입니다.

저번 강의에 이어서 오늘은 문자열 클래스의 함수에 관하여 알아보도록 하겠습니다.

문자열 클래스란, 따옴표로 감쌓여 있는 값을 의미하며 통상적으로 str이라고 표현합니다. python에서는 강력한 기능의 문자열 함수를 제공하고 있는데요 한번 그 것들에 관하여 알아보도록 하겠습니다.


1. 접근방법


문자열 클래스의 함수에 접근하기 위해서는 먼저 문자열 객체가 있어야겠죠? python은 모든 것을 객체로 인식하기 때문에 문자열 변수나 상수도 객체로 인식합니다. 객체 내부에 있는 함수에 접근하기 위해서는 점(.)을 사용하여 접근합니다.

즉, 객체 내부에있는 함수나 변수에 대한 접근은 객체.함수, 객체.변수로 표현됩니다.


예를 들어 python이라는 클래스에 short이라는 함수가 있다면 이와같이 접근할 수 있습니다.


1
2
myClass = python() # python클래스 객체의 선언
myClass.short() # 객체 내부의 함수에  
cs

 

class를 만들어 놓았으면 먼저 그 클래스를 담는 객체를 선언을 해야겠죠? 그것을 myClass라는 임의의 이름을 가진 변수에 할당합니다. 이렇게 되면 myClass는 python의 인스턴스이니 내부에 있는 변수나 함수에 접근하는 것이 가능해지겠죠? 그래서 myClass.short()라는 구문이 성립하게 되는 것입니다.


문자열클래스도 똑같습니다. 문자열.함수이름 으로 접근하시면 됩니다. 실제 코드를 보면서 이해를 해보도록 하죠.


1
2
3
4
5
6
7
8
9
10
11
myStr = "I love python" # 문자열 선언
 
print(myStr.upper()) # 문자열 클래스의 upper 메소드 사용
 
print("I love python".upper()) # 문자열 클래스의 upper 메소드 사용
 
 
#결과값
 
I LOVE PYTHON
I LOVE PYTHON
cs


1번 라인에 I love python이라는 문자열 변수 myStr을 선언하였습니다. 그렇다면 myStr은 문자열 클래스의 인스턴스나 다름없겠죠? 그렇기 때문에 upper라는 문자열 클래스의 메소드를 사용할 수 있는 것 입니다.(upper는 소문자를 대문자로 변경해주는 메소드입니다.)


5번라인에 보면 I love python을 변수에 할당하지않고 그냥 .upper를 붙여서 사용했는데요, 이 방법 또한 사용 가능합니다. 결과는 보시는 것과 같이 I LOVE PYTHON으로 동일합니다.




# 문자열 함수의 종류


python에는 강력한 성능의 문자열 함수가 다수 포함되어 있습니다. 그것들에 관하여 한번 알아보도록 하죠.


1. find


find 함수는 검색문자나 문자열이 처음나온 위치를 반환하는 함수입니다. 만약 검색한 대상이 문자열에 존재하지 않을 경우 -1을 리턴합니다.


1
2
3
4
5
6
7
8
9
10
"abc".find("a")
"abc".find("ab")
"abc".find("bc")
"abc".find("d")
 
# 결과값
0
0
1
-1
cs



2. join


join 함수는 인자로 받은 문자열으 각 문자사이에 문자열을 삽입하는 함수입니다. 예를 들어 Rekt라는 문자열에 /을 삽입하면 R/e/k/t가 되는 것이죠.


1
2
3
4
"/".join("Rekt")
 
# 결과값
"R/e/k/t"
cs



3. upper & lower


upper는 소문자를 대문자로 변경해주는 함수이며 lower는 대문자를 소문자로 변환합니다.


1
2
3
4
5
6
7
"life is short you need python".upper()
"LIFE IS SHORT YOU NEED PYTHON".lower()
 
# 결과값
 
"LIFE IS SHORT YOU NEED PYTHON"
"life is short you need python"
cs



4. replace


기존 문자열을 원하는 새 문자열로 치환해주는 함수입니다. 문자열에서 일괄적으로 수정할 내용이 있을 경우에 유용하게 사용됩니다.


1
2
3
4
5
"my name is rekt77".replace("rekt77","python")
 
# 결과값
 
"my name is python"
cs



5. split


구분자를 기준으로 문자열을 나눠 리스트로 반환하는 함수입니다. 여기서 리스트라는 것은 python에서 배열같은 자료구조입니다.

제가 생각하기에 가장 많이 쓰는 문자열함수 top 3 에 들어갈것 같습니다. 정말 기능자체가 너무 강력합니다.


1
2
3
4
5
6
"hello python".split()
"010-7607-4401".split("-")
 
# 결과값
["hello","python"]
["010","7607","4401"]
cs


1번 라인에는 아무인자를 넣어주지 않았는데 공백을 기준으로 문자열이 잘린 것을 볼 수 있습니다. 그 이유는 split의 기본 인자가 공백이기 때문입니다. 따라서 공백을 기준으로 나눌 때에는 아무 것도 넣어주시지 않으셔도 무방합니다.



6. count


count함수는 인자로 입력받은 문자열이 문자열내에 몇번 출현하는지 숫자로 반환해주는 함수입니다. 예를 들어 어떤 기사에서 아이언맨이란 단어가 몇 번 출현하였는지 궁금할때에는 기사.count("아이언맨") 하시면 되겠죠? 


1
2
3
4
5
6
7
8
9
10
article = """
The US Military Is Chopping Up Its Iron Man Suit For Parts
It’s no wonder Stan Lee had to invent a power-source that defied
the laws of physics to make Iron Man feasible even as a comic-book.
"""
 
article.count("Iron Man")
 
# 결과값
2
cs


7. startswith


startswith 함수는 어떤 문자열이 특정 단어로 시작하는지 체크할 때 쓰이는 함수입니다. 예를 들어 a로 시작하는 단어만을 검사하고 싶을 때가 있죠? 이런 경우에 사용하면 굉장히 유용한 함수입니다. 결과값은 참/거짓으로 리턴됩니다.


1
2
3
4
"apple".startswith("a")
 
# 결과값
True
cs


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

[python] 리스트 함수  (0) 2019.02.11
[python] 리스트와 Shallow Copy  (0) 2019.02.10
[python] 문자열  (0) 2019.02.07
[python] 기본자료형 - 숫자  (0) 2019.02.07
[python] 파이썬 설치하기  (0) 2019.02.07

# 파이썬 문자열



python에서 String은 문자나 단어 등으로 구성된 문자들의 집합을 의미합니다. "Hello world", "123456789", "hi" 등이 해당 될 것 입니다. 파이썬에서는 문자열을 큰따옴표("")로 감싸서 표현하는데요 단어, 문자 뿐만 아니라 숫자도 따옴표로 둘러 쌓여 있다면, 모두 문자열로 인식합니다.


파이썬에서 문자열 변수를 선언하는 방법은 다양합니다. 크게 4가지로 분류할 수 있는데요 방법은 아래와 같습니다.



1. 따옴표(quotation)


사실 큰 따옴표나 작은 따옴표나 문자열로 인식하기는 매한가지 입니다. 하지만 문자열안에 큰 따옴표가 있는경우는 어떨까요? 예를 들어 He said "Its time to go". 라는 문자열이 있다고 가정해 봅시다. 파이썬에서 문자열 변수로 저장하려면 아래와 같이 입력해야 겠죠?


1
2
str1 = "He said "Its time to go"."
 
cs



하지만 이런식으로 정의한 변수가 올바르게 작동할 까요? 아마 Syntax에러를 내보내며 고치라고 하겠죠?


이런경우에는 작은 따옴표를 사용하면 문제를 해결할 수 있습니다.

1
2
str1 = 'He said "Its time to go".'
 
cs


  이번에는 문자열로 잘 인식하는 것을 볼 수 있습니다. 이렇듯이 일반적인 상황이라면 문자열을 선언 할 때 작은 따옴표나 큰 따옴표의 여부가 전혀 상관없지만, 문장안에 작은 따옴표가 있는경우라면 큰 따옴표로 선언을, 큰 따옴표가 있는경우라면 작은 따옴표로 선언을 하시면 됩니다.


2. 따옴표 3개


따옴표 3개는 파이썬에서 긴 문자열을 선언할 때 사용하는 방법인데요, 소설 책 1페이지를 문자열 변수에 담는다고 생각해 봅시다. 에러가 나거나 인식이 안되는 경우가 발생할 것입니다. 이런경우 큰 따옴표나 작은 따옴표 3개를 사용하여 문자열을 감싸주면 정확하게 인식이 됩니다.


1
2
quotes = """I don't believe that if you do good, good things will happen. Everything is completely accidental and random. Sometimes bad things happen to very good people and sometimes good things happen to bad people. But at least if you try to do good things, then you're spending your time doing something worthwhile
Read more at: https://www.brainyquote.com/quotes/helen_mirren_534603?src=t_random"""
cs





# 문자열 변수의 입력과 연산


문자열 변수를 사용하기 위하여 변수를 선언하는 방법도 있지만, 외부에서 입력을 받아오는 방법이 존재합니다.

그를 위해서 python에서는 input이라는 내장함수를 지원하는데요,

input 함수를 사용하면 키보드를 통하여 문자열을 입력받을 수 있습니다. input함수의 인자 값으로 들어가는 문자열은 입력전에 화면에 표시할 문자열입니다.


1
2
3
str1 = input("prompt>>")
print(str1)
 
cs



위 사진은 코드에대한 결과 값입니다.

input의 인자로 prompt>>를 주었더니 화면에 표시가 되었습니다. 그리고 나서 제가 코드사기꾼은 사실 좋은 사람이야를 입력하였더니 이 값이 str1이라는 변수에 저장되어 화면에 출력되었죠?


또한 Python에서는 다른 언어와 달리 문자열을 이용해 더하거나 곱하기를 할 수있는 특징이 있습니다.

예를 들어 "="를 50번 출력하고 싶을시에 간단히 "="*50을 해주면 됩니다. 문자열끼리 연결하고 싶은때에는 +연산자를 사용해 "문자열 변수+ 문자열 변수" 가 가능합니다. 한번 확인해 볼까요?


1
2
print("="*50)
print("코드"+"사기꾼")
cs







# 문자열 인덱싱 & 슬라이싱


파이썬에는 인덱스로 접근할 수 있는 특별한 자료형이 있는데요 이를 우리는 시퀀스 자료형이라고 부릅니다. 시퀀스란 무슨 뜻일까요? 연속된 하나의 설정을 의미하는 단어 입니다. 즉 어떤 것의 연속이란 뜻으로 받아들이시면 됩니다.


문자열은 문자의 연속입니다. I love you라는 문장을 위해서는 I,l,o,v,e,y,o,u가 필요 합니다. 그럼 이를 순서대로 색인 할 수 있겠죠? 이렇듯 파이썬에서는 문자 하나하나를 인덱스로 받아들이고 이를 인덱스를 기준으로 접근할 수 있는방법인 인덱싱과 인덱스를 기준으로 자르고, 나눌 수 있는 슬라이싱이라는 것을 지원합니다. 모든 시퀀스 자료형에는 이 방법을 사용할 수 있습니다.


C언어에서 문자열을 생각해 봅시다.  char* str = "Hello world" 라는 문자열이 있을 경우에 분명히 각 문자에 인덱스로 접근이 가능했습니다. python도 마찬가지 입니다. 각 문자열의 시작 문자를 0번 인덱스로 지정하고 접근할 수 있습니다.



1
2
str = "Rekt77 is nothing."
print(str[0]+str[1]+str[2]+str[3])
cs


인덱싱의 결과입니다. 0번째, 1번째, 2번째, 3번째 문자열을 골라 서로 더했습니다. 각각이 R,e,k,t 이기 때문에 합치면 Rekt가 되겠죠? 제대로 동작했습니다.


이번에는 인덱스를 이용해서 문자열을 나누고, 잘라보도록 해겠습니다. 이것을 슬라이싱이라고 하는데요 슬라이싱에는 몇가지 규칙이 있습니다.


1. [이상:]


명시한 인덱스 이상의 인덱스만을 표현하고 싶을 때 사용하는 방법입니다. [2:]를 사용한다면 2번째 인덱스 이상의 요소를 전부 출력하겠죠 ?





2. [:미만]


명시한 인덱스 미만의 인덱스만을 표현하고 싶을 때 사용하는 방법입니다. [:2]를 사용한다면 2번째 인덱스 미만의 요소를 전부 출력하여 결과값은 Re가 나올 것 입니다.





3. [이상:미만]


범위를 명시하여 문자열을 나누고 싶을 때 사용하는 방법입니다. [2:7]를 사용한다면 2번째 인덱스 이상, 7번째 인덱스 미만의 요소를 전부 출력하여 결과값은 kt77가 나올 것 입니다.





4. [이상:미만:스텝]


이 부분은 많은 분들이 잘 모르시는 내용인데요 슬라이싱에는 콜론을 두 개까지 사용할 수 있습니다. 콜론을 한개 더 사용하게 되면 스텝을 넣어 슬라이싱을 할 수 있는데요 스텝에 2를 넣는다면 해당 인덱스가 2의 배수이면, 출력이 됩니다. 범위를 2이상 15미만으로 설정을 하였기 때문에 그 안에서만 스텝이 적용됩니다.




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

[python] 리스트 함수  (0) 2019.02.11
[python] 리스트와 Shallow Copy  (0) 2019.02.10
[python] 문자열 함수  (0) 2019.02.09
[python] 기본자료형 - 숫자  (0) 2019.02.07
[python] 파이썬 설치하기  (0) 2019.02.07

# 파이썬 기본자료형



먼저 Python의 자료형에 관하여 알아보겠습니다. 자료형이란 프로그래밍시 사용되는 모든 자료 형태입니다. Python에는 기본적으로 숫자, 문자열, 리스트, 딕셔너리, 튜플, Bool 그리고 Set의 자료형이 존재하는데요, 타언어에서는 변수를 선언할 때 int num, String alpha 등 처럼 자료형을 명시해줘야함과 다르게 Python은 변수 선언시 자료형을 명시하지 않아도 되는 특징을 갖고 있습니다. 


a = 123

b = "Hello Python"


즉, 위와 같이 입력해도 python은 찰떡같이 알아먹습니다. qutation("")으로 감싸여진 것은 str, 일반 숫자로 쓰여 있는것은 int형으로 인식합니다. 변수를 선언함과 동시에 자료형을 입력해주지 않아도 되는 편리함 때문에 문법이 더욱 간결해집니다.


하지만 이것은 무조건 좋은 것만은 아닙니다. 요즘 3.7버전의 python에서는 type hint 라는것이 등장했는데요 함수의 인자 값으로 들어갈 형을 지정해 주는 것입니다. 기존의 python은 함수의 인자에 자료형을 명시해 주지않아 가독성이 떨어지는 경향이 있었습니다. 이는 사용자의 불편함을 초래하였고 이를 해결하려는 노력이 지속되고 있습니다.


그렇기 때문에 변수를 선언할 때에는 변수 이름만 봐도 어떤 것인지 알게끔하는 능력이 정말 중요합니다.




# 숫자


Python에서 숫자란 1, 2, 3, -3 과 같이 정수와, 1.45, 0.11과 같이 실수로 표현되는 수를 의미합니다. 추가적으로 기수 체계가 다른 16진수, 8진수, 2진수도 인식합니다.


 자료형

 선언방법

 정수형

 num = 123

 실수형

 num = 1.45

 16진수

 num = 0x0d

 8진수

 num = 0o07

 2진수

 num = 0b1010


먼저 정수, 16진수, 8진수, 2진수 형태로 변수를 선언하면 python내에서 해당 변수의 자료형을 int로 인식합니다. 즉 0x0d를 입력한다고 해서 0x0d가 저장되는 것이 아니라, 0x0d의 10진수값인 13이 변수에 저장되는 것이죠.


하지만 실수형으로 변수를 선언하였다면 해당 변수의 자료형은 float형이 됩니다. 한 번 확인해 볼까요?



1
2
3
4
5
6
7
8
9
10
11
12
13
14
num = 123
print(type(num))
 
num = 1.45
print(type(num))
 
num = 0x0d
print(type(num))
 
num = 0o07
print(type(num))
 
num = 0b1010
print(type(num))
cs


type()함수는 해당 변수의 자료형을 확인하는 내장함수입니다.



해당 코드를 실행한 결과값 입니다. 제가 말한 대로 실수형을 제외한 모든것은 int형으로 저장이 되었죠?




# 연산자


컴퓨터는 성능좋은 계산기입니다. 그렇다면 당연히 우리는 컴퓨터로부터 수학적인 계산능력을 끌어와 이용해야 할 것입니다. 다른 언어를 배우고 오신 분들이라면 다른언어에는 연산자라는게 있다는 것을 이미 알고 계실 겁니다. 당연히 Python도 타 언어와 동일하게 계산 연산자가 존재합니다. 사칙연산뿐만아니라, 제곱연산자 등 편리한 연산자들이 있습니다.


 연산자

설명

 +

더하기 연산자 

 -

 빼기 연산자

 *

 곱하기 연산자

 /

 나누기 연산자(소수점 반환, 자동 형변환, 3버전기준)

 **

 제곱 연산자

 //

 나눗셈 후 몫 반환

 %

 나눗셈 후 나머지 반환


그렇다면 이번에는 위의 연산자를 이용하여 실제로 변수의 값들을 연산해 보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
num1 = 10
num2 = 4
 
print(num1+num2)
print(num1-num2)
print(num1*num2)
print(num1/num2)
print(num1**num2)
print(num1//num2)
print(num1%num2)
 
cs



결과 값입니다. 제대로 값이 나오는 것을 확인 할 수 있죠? 그런데 말입니다 정수끼리 나눗셈을 했을때 실수가 나오는 것에대해서 어떤 생각이 드시나요? C언어에서는 정수끼리의 연산을 진행해서 실수가 나오게 하려면 강제 형변환(type casting)을 진행해줘야 했는데요 python은 자동으로 형을 변환해 줍니다. 한번 확인해 볼까요?


1
2
3
4
5
num1 = 10
num2 = 4
 
print(type(num1/num2))
 
cs



결과 값입니다. float형으로 변환되었죠? 이와 같이 파이썬에서는 나눗셈을 시도할 때 강제적인 형변환이 따로 필요하지 않습니다. 정말 간단하지 않나요?





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

[python] 리스트 함수  (0) 2019.02.11
[python] 리스트와 Shallow Copy  (0) 2019.02.10
[python] 문자열 함수  (0) 2019.02.09
[python] 문자열  (0) 2019.02.07
[python] 파이썬 설치하기  (0) 2019.02.07

# 파이썬 설치하기




안녕하십니까 코드사기꾼입니다. 



요즘 개발인력시장에서 Python에 대한 수요가 많아진 만큼 이제부터 Python 강의를 업로드해볼까 합니다. 


Python이란 귀도 반 로섬(Guido Van Rossum)이 개발한 인터프리터 언어이며, 문법이 쉬워 빠르게 배울 수 있는 특징이 있습니다.


간결한 문법과 거대한 오픈소스 생태계 때문에 개발 속도가 정말 빨라서 C언어를 주언어로 사용하던 저한테는 특히나 매력적으로 다가 왔는데요, C언어로 개발했을때의 퍼포먼스는 나오지 않지만 Python으로 개발했을 때의 개발시간과의 등가교환에는 상당히 만족하고 있습니다.


자 그럼 이제부터 Python을 설치해보도록 하겠습니다.



# python.org



링크>>> python.org


링크에 접속해서 Download를 클릭하면 아래와 같은 화면이 출력됩니다.






정말 많은 종류의 python이 있네요! 몇년 이내에 버전 2 python은 지원 종료 되기 때문에 처음 접하시는 분이라면 버전 3 python을 추천합니다. 하지만 버전 2도 레가시 버전으로 의미가 있습니다. 제가 이 글을 작성할 때 기준으로 가장 최신버전은 python 3.6.3이었습니다. 여러분들이 설치를 진행하 실 때 가장 최신 버전을 설치하시면 됩니다.


하지만 여전히 많은 라이브러리가 2점대를 지원하고 있기 때문에 특정 버전이 필요한 것이라면 그 버전을 받으시는것이 중요합니다. 


파이썬은 버전2에서 3으로 넘어오면서 꽤 큰 변화를 겪었는데요 그것에 대해서 잘 정리해 놓은 블로그가 있어 링크를 첨부합니다. ^^


링크 >>> http://www.w3big.com/ko/python/python-2x-3x.html






버전을 선택하였으면 본인이 운용하고 있는 OS, 설치파일 형태 등을 선택해야 하는데요 저는 윈도우즈를 운용하고 있고 실행파일 형태의 설치파일을 원하기 때문에 x86-64 executable installer를 선택하였습니다.




파일이 다운로드가 완료되면 실행 시키시면 됩니다.

위 그림은 실행시켰을 나타나는 첫 화면인데요, Add Python 3.6 to PATH와 Install launcher for all users를 둘다 선택하고 설치를 진행해 줍니다.

Add Python 3.6 to PATH는 정말 중요한 옵션인데요 시스템 환경변수와 관련된 옵션입니다. 


환경변수라는것은 커맨드라인 프롬프트(CMD)에 특정 명령어를 입력하였을때 실행할 파일을 매핑시켜주는 변수입니다. CMD에 python이라는 명령어를 입력했을 때 원래라면 아무것도 실행되어야 하지 않는데 Add Python 3.6 o PATH를 활성화하면 환경변수에 Python 실행파일의 경로가 저장되어 CMD가 인식하여 Python 인터프리터를 실행시켜 줍니다.





Install for all users 옵션을 선택하면 현재 로그온 되어 있는 계정외에 모든 계정에서 python을 실행할 수 있습니다. 추가적으로 필자는 사용자 하위 폴더에 python폴더가 생성되는 것 보다 C드라이브 하위에 생기는 것을 선호하기 때문에 설치 폴더를 변경하였지만, 내버려둬도 무방합니다.


통상적으로 python 설치 폴더는 버전 2번째 자리까지 나타내는데요 3.6.3이면 36으로 3.7.1은 37로 표현합니다. 저는 3.6.3을 다운받았기 때문에 Python36이라는 폴더를 설치폴더로 결정하였습니다.




자 여기까지 오셨다면 설치가 완료된 것입니다. Close 버튼을 누르고 설치가 완벽하게 되었는지 확인해 보도록 하겠습니다.

CMD 창을 열고 python을 입력해 봅니다.




정상적으로 실행이 되셨다면 아래의 코드를 입력해보고 마무리 해보도록 하겠습니다.



1
print("Hello World")
cs


Hello Wolrd가 출력된 것을 확인하셨나요? 정상적으로 출력되면 설치가 제대로 된 것입니다.


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

[python] 리스트 함수  (0) 2019.02.11
[python] 리스트와 Shallow Copy  (0) 2019.02.10
[python] 문자열 함수  (0) 2019.02.09
[python] 문자열  (0) 2019.02.07
[python] 기본자료형 - 숫자  (0) 2019.02.07

+ Recent posts