저번에 Dictionary를 생성하고 삭제하는 간단한 방법에 대해서 공부했다면 오늘은 저번에 이어 딕셔너리의 좀 더 복잡한 사용법에 대해서 공부해 보도록 하겠습니다. 저번에 딕셔너리는 {key: value} 가 맵핑되어 있는 집합이자 딕셔너리의 키 값은 Immtable하고, 값은 Mutable하다고 했습니다. 그런데 여기서 Key가 중복되면 에러를 출력해 줄까요? 불행하게도 그렇지 않습니다. 에러를 출력해 주면 내가 뭘 잘못했는지 알고 수정 할 텐데, 그렇지 않습니다. 그냥 값을 출력해 줍니다. 즉, 다음과 같습니다.

 

 

위와 같이 마지막 값만 출력해 줍니다. 이것은 파이썬이 잘못된 언어가 아니라, value가 변할 수 있는 값이기 때문에 마지막 값으로 덮어 씌워지는 것입니다. 딕셔너리 기초에서 봤는데, 딕셔너리는 왜 index로 접근 할 수 없었을까요? index가 존재하지 않고 대신에 key라는 변하지 않는 참조 가능한 값이 있기 때문입니다.

 

 

dictionary를 선언하는 방법은 list 처럼 하되, dictionary가 대괄호로 들러쌓여 있으므로 = { } 처럼 선언해 줍니다. 아니면 딕셔너리 Constructor로도 생성이 가능한데 주의 할 점은 dictionary constructor를 사용할 떄는 대괄호가 아닌 소괄호로 둘러 쌓아 줘야 하고, key에 ' '을 사용하면 안 된다는 점입니다. 사용은 다음과 같이 하면 됩니다.

 

 

리스트 속에 다음과 같이 [ [key, value] ] 키와 value값이 나란히 있으면, dict() 메서드를 통해 dictionary로 변환이 가능합니다.

 

 

딕셔너리에서 키:값 쌍을 여러 개를 만들 고 싶을 경우,

 

 

 

하나의 리스트에 모두다 쓰면 dict 에러가 납니다.

a=[ ['a',1], ['b',1] ] 처럼 나눠써야 에러가 나지 않고 정상적으로 출력이 됩니다. 이러한 점 알아 두시기 바랍니다.

 

딕셔너리를 print하고 싶을 경우, 보통, print 하는 것처럼 형식 지정자를 사용할 필요 없이 바로 print함수 안에 dictionary이름을 적으면 됩니다. print함수가 아니면 pprint 모듈을 import해서 dictionary를 출력할 수도 있습니다.

 

 

오늘은 딕셔너리를 좀 더 자세히 알아 봤습니다만, 충분하지는 않을 것으로 생각됩니다. 저도 충분히 공부했다고 생각되지 않으니까요 ㅎㅎ;;

관련해서 사용하는 것은 pandas와 numpy를 공부할 때 같이 배우도록 하겠습니다.

 

그럼 오늘은 이만 마치도록 하겠습니다.

 

참고자료: https://wikidocs.net/16043

이번엔 파이썬의 특수한 자료형인 딕셔너리 자료형을 학습하도록 하겠습니다. 해당 자료형은 저도 잘 사용하지 않는 관계로 자세하게 공부하면서 포스팅을 해야 하겠습니다. 제가 딕셔너리 자료형을 소홀히 한 이유는 다른 언어에서는 배열만 존재하고 해당 배열이 파이썬 언어에서는 리스트로 사용되기 때문에 딕셔너리 자료형은 자주 사용되지 않거니 하고 생각해기 때문입니다. 하지만 생각보다 자주 사용되더군요. 따라서 생성부터 자세하게 알아보도록 하겠습니다.

 

출처: https://wikidocs.net/16 

(점프 투 파이썬)

 

1. 딕셔너리 자료형의 생성

 

기본적으로 딕셔너리 자료형은 Index로 이루어져 있지 않고 key : value 이렇게 사전처럼 이루어져 있으므로 생성 할 때도, key값과 value값을 모두 생성 해 줘야 합니다. DB를 배우신 분은 아시겠지만 KEY값은 일반적으로 유일한 값이어야 한다는 것을 아실 것입니다. 그리고 파이썬의 딕셔너리에서도 유일한 값으로 사용합니다. 그러면 코딩을 해서 생성 해보록 하겠습니다.

 

 

 dic이라는 dictionary에 zipcode와 phone을 'key'와 value쌍으로 추가 했습니다. 그런데 여기에 이름이 빠진 것 같아서 'name'과 그에 해당하는 값을 추가 해 줬습니다. 추가하는 방법은 dictionary 이름['key 이름'] = value 입니다. 이렇게 해 줬더니. 값이 정상적으로 들어 간 것을 확인 할 수가 있습니다. 그런데 핸드폰이 dictionary에서 필요가 없어졌다고 합니다. 그러면 삭제를 해 줘야 하는데 이건 del명령어를 사용해줘야 합니다. 즉, del dictionary이름['key이름'] 이렇게 지우면 됩니다. 그러면 정상적으로 phone 값이 사라진 것을 볼 수 있습니다.

 

 기존에 인덱스로 자료에 접근하던 프로그래머들에게는 매우 생소한 자료형이긴 하지만 처음 프로그래밍 하는 사람들에게는 오히려 이게 편리 할 수도 있을 것 같긴 합니다. 프로그래밍 시에는 리스트나 Ndarray가 더 많이 쓰이긴 하지만요. (딕셔너리도 의외로 쓰이긴 합니다. 무시해서는 큰 코 다칩니다. 저처럼요)

 

 그럼 다음으로 넘어가서. 딕셔너리를 활용하는 방법에 대해서 알아 보도록 하겠습니다. 실제로는 판다스 DataFrame안에 넣어서 사용하거나 하지만 저처럼 기초를 모르면 흔들리기 때문에 기초부터 자세히 짚고 넘어가도록 하겠습니다.

 

 

 

 dictionary에 접근하는 방법은 dictionary이름['key'] 입니다. 추가하는 방법과 비슷합니다. 따라서 나중에 공부하도록 하겠지만 pandas나 numpy에서 한 열이나 행을 출력하거나 할 때도 딕셔너리를 이렇게 사용 할 수 있겠네요. 하지만 For문으로 i+를 통해서 index를 증가 시키면서 점진적으로 출력시키는 데에는 어려움이 있을 것 같습니다. 그래서 list를 사용합니다. dictionary의 key이름이 [1] [2]....이렇게 index처럼 구분 될 수 있으면 반복 문이 사용 될 수도 있겠네요. 어쨌든, 그건 추후의 일이고.

 

 앞에서도 언급했는데, 딕셔너리를 만들 때 주의해야 할 사항은 첫째로  key는 반드시 유일해야 한다는 것입니다. 그렇지 않으면 하나를 제외한 나머지 값들이 무시되어 버리는 현상이 발생해 버립니다. 그리고 key는 불변해야 한다는 것 입니다.

 

 

2. 딕셔너리 관련 기초 함수

 

 

딕셔너리를 자유롭게 다루기 위해서는 관련 개념을 아는 것 뿐만 아니라, 동작하는 함수들도 알고 있어야만 합니다. 물론 필요 할 시에 참조해도 됩니다. 그냥 이런 기능이 있었지~하고 알고 있으면 됩니다.

 

 

 

 dictionary.keys() 라는 함수가 있습니다. 그러면 이 함수는 dictionary의 key만을 모아서 dict_key라는 객체를 리턴합니다. 주의 할 것은 여기서 이것은 리스트처럼 보이지만, 리스트가 아니라는 점입니다. 파이썬 2.x, 정확히는 2.7까지는 dict_key는 list를 리턴했지만 3.0이후에는 list가 아닌 단순한 객체로서 리턴 되었습니다.

 

 

 

 

dictionary.keys()가 출력하는 것이 list였다면 list()안에 들어가서 list가 만들어 질리가 없겠죠? 그런데 list가 만들어 졌습니다.

 

 뿐만 아니라 리스트 함수인 append를 사용 할 수 없다는 에러 메세지가 출력이 됩니다. 이러한 정황들로 봐서, dictionary.keys()가 출력하는 것은 리스트가 아닌 단순한 객체를 출력하는 것으로 볼 수 있습니다.

 

dictionary.keys()와 비슷하게 dictionary의 value값을 얻고 싶다면 dictionary.values()함수를 사용하면 됩니다. 이것도 싫다. 나는 key랑 value 쌍으로 얻고 싶다. 하면 dictionaly.items()함수를 사용하시면 됩니다. 사용은 다음과 같이 하시면 됩니다. 생각보다 매우 간단합니다.

 

 

 

각각 dictionary.values()는 dict_values객체를 그리고 dictionary.items()는 dict_items객체를 리턴 하는 것을 볼 수 있습니다. 뿐만 아니라 dictionary자료형은 list처럼 clear()함수를 통해 dictionaryd의 key : value 쌍을 지우는 것을 지원 합니다. dictionary.clear() 이렇게 사용하면 되겠습니다.

 

 딕셔너리 자료형은 저도 잘 모르는 관계로 공부하면서 포스팅 하고 있습니다. 그래서 기초와 심화로 나누어서 포스팅 할 것입니다. 이번에 dictionary를 잘 공부해두면 저도 좋고 이걸 보시는 분들도 좋을 것 같아서 말이죠 ㅎㅎ

 

 

 

'머신러닝 > 기초 문법' 카테고리의 다른 글

넘파이 기초 - 색인과 슬라이싱 기초(2)  (1) 2019.01.31
5. 딕셔너리 심화 - (2)  (0) 2019.01.30
4. 리스트와 관련 메서드  (0) 2019.01.28
3. String -(2) : string 함수  (0) 2019.01.24
3. String - (1)  (0) 2019.01.22

 파이썬에서 가장 많이 사용하는 변수 형 중 하나로 리스트가 있습니다. 다른 언어에서 배열로 생각하면 되지만 다른 언어보다 기능이 좀 더 추가되어서 진화된(?) 배열이라고 생각하시면 될 것 같습니다. 그리고 나중에 학습 할 Numpy 배열인 Ndarray는 보다 더 효율적인 함수들을 많이 가지고 있습니다. 그럼 IDE를 키시고 코딩을 시작하시죠.

 

 

1. 리스트의 생성과 인덱싱/슬라이싱

 

 - 리스트의 생성은 위아 같이 a = [ ]  처럼 셍성을 합니다. 만약 [ ] 로 생성을 하면 빈 배열을 생성한다는 뜻인데, 처음에는 초기화 해주는 것이 좋습니다. Null값 때문에 값을 넣을 수 없다는 에러 값을 자주 내뱉기 때문입니다. 부득이한 경우에는 어쩔 수 없지만 말이죠.

 

 - a[0] a[1] a[-1] 처럼 저번에 String에서 배웠던 것처럼 인덱싱을 할 수 있습니다. a 리스트는 0번 인덱스에 1값을 가지고 있기 때문에 a[0]에 따라 1값을 출력합니다. 그리고 저번에 -1은 맨 끝 값을 의미한다고 했습니다. 그렇기 때문에 a[-1]은 a리스트의 마지막 원소인 4를 출력합니다.

 

 - 리스트 슬라이싱의 경우도 스트링과 비슷합니다. 리스트 또한 스트링 처럼 슬라이싱하라고 명령을 할 수 있는데 이 경우에는 a 리스트의 0에서 2를 자르라고 명령 을 하였습니다. 따라서 0인덱스 부터 2인덱스 바로 이전인 1인덱스까지인 [1, 2]를 출력해 줍니다.

 

2. 주요 리스트 함수.

 

 

자주 쓰는 메서드 및 함수들에 대해서 살펴보도록 하겠습니다.

 

2.1 Append / Extend

 

 두 메서드 둘 다 리스트에 원소를 추가하는 메서드입니다. 언뜻 보면 똑같아 보입니다. a에 원소 하나를 append 했더니 1,2,3,4,5가 되었다.

 그 다음에 [1,2,3,4,5] 리스트 안에 리스트를 더 추가하고 싶어서 extend를 써 봤습니다. append는 앞에서 그냥 원소가 추가 되었으니까. 그럼 그냥 append로 추가 해 봤습니다. 그랬더니 list가 들어갔습니다.

 

그러면 extend는 대체 하는 일이 뭘까요? 위에서 보시다시피 리스트를 리스트의 엘레멘트들로 추가 하는 역할을 합니다. append(1)은 에러가 나지 않지만 extend(1)은 에러가 납니다. extend는 에러가 나기 때문입니다. 두 메서드의 차이점을 아시고 사용하시기 바랍니다.

 

2.2 Clear

3.5 버전인가 3.3 이후에 추가된 메서드로, 특정 리스트를 모두 제거하는 함수입니다. 기존에는 del메서드를 사용해서 del a[:] (주 : 는 전체를 슬라이싱 하므로, 리스트의 전체를 의미함) a리스트의 전체를 삭제 하였습니다. 하지만 이제는 clear함수를 사용 할 수 있게 되어서 a,clear() 처럼 사용하면 리스트를 모두 비울 수 있게 되었습니다. 따라서 주기적으로 리스트를 삭제 하거나 메모리에서 비울 필요가 있으면 clear()를 사용 해서 편하게 사용 할 수 있게 되었습니다.  

 

 

 

3. pop

리스트의 가장 기본은 위의 1,2번으로 끝입니다. 노가다 코딩으로 (ㅎㅎ) 할 수 있지만 좀 더 효율적인 코딩을 위해서 상황에 맞게 Numpy를 사용하고 파이썬만을 사용한다면 다른 메서드들을 사용하는 것입니다. 귀찮으신 분들은 위에 1,2,번 까지만 보세요. 아래는 좀 덜 중요한 함수입니다. 하지만 그래도 그렇게 수준급이 아닌 제가 많이 사용하는 함수이니 익혀 두시는 것도 좋을 듯 합니다.

 

pop은 자료구조를 좀 배워 보신 분은 아시겠지만 pop구조라는 것을 아시는 분도 있이실 겁니다. 뒤에서부터 뺴내는 거죠.

 

 

 

위와 같은 방식으로 말입니다. 그래서 기본적으로 a.pop()이렇게 써 놓으면 리스트의 맨 뒤에서부터 한 번 출력한 다음에 빼내지만 괄호안에 인덱스를 써주면 인덱스에 있는 리스트 값을 출력하고 빼냅니다. 그래서 위와 같이 실제 코딩 할 때 print (a.pop()) 처럼 사용 할 수 있습니다.  그러면 리스트의 뒤에서 값이 하나씩 출력되면서 값이 하나씩 빠져 나오는 코드가 생성됩니다.  아직 배우진 않았지만 반복문이랑 같이 사용해보면 다음과 같이 쓰여지겠죠.

 

for i in range(0, 10):

print(a.pop())

 

4. insert/count

 

 append나 extend는 뒤에만 값을 붙여 넣을 수 있었지만 insert의 경우에는 인덱스를 정해서 값을 집어 넣을 수 있습니다. 위에서는 값만 집어 넣지만 a.insert(0,[1,2,3])처럼 리스트를 집어 넣을 수도 있습니다. 하지만 특별한 경우가 아니면 인덱스까지 굳이 찾아서 프로그래밍을 하지 않기 때문에 계속 사용하지는 않죠 ㅎㅎ append나 아니면 미리 리스트의 형태를 만들어서 대입을 해주는 경우가 많습니다. 그래도 알아둬서 나쁠 건 없는 메서드 입니다. 필요 할 경우가 분명히 있긴 있거든요.

 

count는 리스트 내부의 값을 세는 메서드 입니다. 저도 실제로 그렇게 사용해 봤습니다. 하지만 별도로 용도가 있는 지는 모르겠군요.

 

 

 

 

 

 

 

 

 

이제 마지막으로 Dictionary만 하면 대략적인 자료형은 끝이 나는군요 ㅎㅎ 자료형이 끝나면 제어문으로 바로 넘어가면 되겠습니다!

 

'머신러닝 > 기초 문법' 카테고리의 다른 글

5. 딕셔너리 심화 - (2)  (0) 2019.01.30
5. 딕셔너리 기초 - (1)  (0) 2019.01.29
3. String -(2) : string 함수  (0) 2019.01.24
3. String - (1)  (0) 2019.01.22
2. 간단한 숫자 자료형과 해당 형식 지정자  (0) 2019.01.20

 저번에는 String의 인덱스와 슬라이싱까지 살펴 보았는데 해당 부분이 스트링에서 가장 중요한 부분이라고 보시면 됩니다. 그리고 Numpy와 Pandas에서도 자주 사용되는 부분이니 잘 살펴보시기 바랍니다. 나중에 복습하셔도 상관없겠죠.

 이번에는 string을 다룰 떄 사용하는 각종 함수에 대해서 살펴 보도록 하겠습니다. 제 목표는 어차피 Numpy, Pandas 등의 라이브러리를 사용하는 것이기 떄문에 간단한 함수만 짚고 넘어가도록 하겠습니다. Join, Reverse 같은 함수들을 살펴 볼 텐데, String을 다룰 때 자주 사용되는 함수 입니다.

 

그러면 Coding을 시작 해 보도록 하겠습니다.

 

1. Replace

먼저 가장 자주 쓰이는 Replace 함수를 코딩 해 봤습니다. 해당 함수의 기본적인 사용법은 간단합니다.

변수.Repace("Old value","New value")

변수에서 로 바꿀 값(Old value)을 새로운 값(New value)로 치환하는 것 입니다.

 

 

 

 

그러면 다음과 같이 만약에 특수 문자나 어떤 바꾸고 싶은 값이 이전에 있을 경우에 원래 값으로 되돌릴 수가 있겠죠? replace는 주로 이럴 경우에 사용하는 함수입니다. 하지만 숫자를 주로 취급하는 저는 잘 사용하지를 않습니다 나중에 숫자랑 String이랑 마구잡이로 뒤섞인 데이터를 다뤄야 할 경우에는 이런 함수도 다뤄야 하겠지만요.

 

하지만 주의해야 할 점이 있는데 replace는 string형태에서만 작동한다는 점입니다. 위의 에러 메세지를 참고 하시면 알 수 있으실 겁니다. 나중에 학습하겠지만 여러가지 자료를 저장 할 수 있는 리스트의 경우도 내용이 String (' '로 둘러 싸여 있는 것)이 아니면 replace나 다른 함수들을 사용 할 수 없겠죠?

 

2. Split

 

문자열을 배열, list로 나눠주는 함수입니다. 글자 string을 list로 나눠주는 함수입니다. 이를 코딩하여 보면,

 

위와 같이 ()안에 아무것도 쓰지 않으면 공백(스페이스, 탭)을 기준으로 배열을 생성하고, 따로 구분기호를 주면 그것을 기준으로 배열을 생성합니다. 만약에 구분기호가 문자열 내부에 없으면 그냥 string을 통째로 리스트안에 집어 넣습니다. (여기에는 까먹고 따로 첨부하지 못했는데

 

IN string = seoulcity

IN string.split("a")

OUT ['seoulcity']

위와 같이 a로 seoulcity를 나눌 수 없기 때문에 'seoulcity'가 통쨰로 리스트 안에 들어 갑니다.

 


추가(2019.02.20) - Split option

K O R E A 스트링을 split(" " ,3) 하면 , 앞에 3글자, K O R 을 리스트에 넣고, 나머지 EA를 리스트에 넣어서 [K, O, R, EA]라는 리스트를 생성한다.  

3.  Join

split함수가 문자열을 리스트로 만들어 주는 함수였다면 join함수는 리스트를 문자열로 만들어 주는 함수입니다. 기본적인 사용법으로 그냥 문자열 사이사이에 특정 string을 입력하는 사용법도 있지만 그것보다는 주로 문자열을 리스트로 만들어주는데 사용합니다. 기본적인 사용법은 위키 피디아를 참조 하였습니다.

https://wikidocs.net/13

 

 

 

 

 기본적으로 string들 사이사이에 구분자(delimiter)를 넣어서 사용하는 방법입니다. abcd가 구분자 ','로 나뉘어 a,b,c,d가 되었음을 알 수 있습니다. 이건 csv와 같이 comma로 나뉘어진 파일로 사용하고 싶을 때 사용 할 수 있겠죠?

 그리고 아까 Join이 Split의 반대 격이라고 말씀 드렸는데 Split이 문자열을 리스트로 나눴다면 join은 리스트를 구분자를 받아서 문자를 합치는 기능을 합니다. 구분자로는 특수 기호를 넣을 수도 있지만 아예 아무것도 안 넣을 수도 있고 공백을 넣을 수도 있습니다.

공백을 넣을 경우에 life is good으로 문자열을 출력하는 것이 가능하겠죠.  

 

 

Replace와 Join외에 자주 쓰는 함수로는 Count, Index, find등이 있지만 사용법이 쉬워서 굳이 언급하지 않고 넘어가도록 하겠습니다.  (사용법은 위키피디아 참조)

 

 

 

다음부터는 파이썬의 주요 자료형인 리스트 그리고 딕셔너리 등으로 찾아오도록 하겠습니다!

 저번에는 숫자형식과 그 포맷팅에 대해서 간단하게 알아 보았습니다. 이번에는 숫자형식 다음으로 String에 대해서 짚어 보도록 하겠습니다. C언어나 다른 언어처럼 달리 실제로 String을 많이 사용하지는 않지만 파이썬은 LIST와 깊은 연관을 가지고 있기 때문에 DEEP하게 살펴보도록 한다고 이전에 숫자형에서 말씀 드렸었습니다. 그럼 이번에도 iPython과 같은 IDE를 키고 실제로 타이핑을 하면서 한 번 알아보도록 하겠습니다.

 

1. Definition and escape code

일단 문자열 자료형을 만드는 방법은 간단합니다.

" "나 ' '안에 선언 하면 되는 거죠. 하지만 's와 같이 string안에 ' 기호를 포함시켜야 할 경우가 있을 지도 모르니까, 가능하면 " "로 선언하는 것이 좋습니다. 따라서 " "로 선언하고, 줄바꿈 기호로 \n을, 그리고 tab으로 칸을 띄우고 싶을 때, \t를 사용합니다. 실제로 코딩을 한 번 해보죠.

 

 

이외에도 스트링에서 사용되는 이스케이프 코드는 인터넷에서 검색하면 바로 나오기 때문에 따로 첨부하지 않았습니다. \n과 \t중 뭔가 자주 쓰이냐 하면 당연히 \n입니다. 줄 개행이 훨씬 코드에서 많이 실 생활에서 사용되는 것을 생각하면 코드에서도 이해하기 쉽죠.

2. 문자열 연산

문자열 연산은 상당히 직관적인데. 더하기, 즉 string1이 korea string2가 fighting 으로 정의되어 있는데 string1 + string2라고 하면 당연히 koreafighting이 됩니다. 그리고 string1*100하면 koreakoreakoreakorea........해서 korea가 100개 정의되게 됩니다. 참고로 /, mod등의 기타 연산은 안 된다는 것도 알아두세요.

 

 

3. 문자열 인덱싱

매우, 매우 매우 중요합니다. string에서도 중요하고, 이 다음에 배울 list와도 관련된 부분이기 때문에 미리 제대로 공부해 두면 좋습니다. 일단 개념부터 알아 두겠습니다.

 

  string = "MyNameIs"

 

위와 같은 String을 정의 해 본다고 합시다. 그렇다면 첫 번째 index는 뭘까요? 백문이 불여 일타라고 일단 쳐봅시다.

 

 

 대문자 M "My"의 M입니다. 이 부분이 프로그램을 처음 하시는 분들이 가장 햇갈려 하는 부분 중 하나인데,  인덱스는 0부터 시작합니다. 1이 아닙니다. 그렇다면 -1은 뭘까요. 음, 눈치 빠르신 분들, 그리고 프로그래밍 좀 하시는 분들은 이미 아시겠지만 문자열의 끝부분을 가리키는 것입니다. 그리고 [-2] [-3] [-4]는 여기 나오진 않았지만 끝에서부터 첫부분까지 거꾸로 indexing하는 것입니다.

 조금 햇갈리실 수도 있지만 몇 번 키보드로 직접 타이핑 하시다 보면 금방 이해 하실 수 있으실 거라고 생각합니다. 저도 그랬으니까요. 문제 없습니다! 

 

4. 문자열 슬라이싱

 이 부분은 파이썬 만의 특징이자 장점인데 저는 C언어를 조금 핥다 시피 하면서 파이썬으로 넘어온터라 정말 놀라웠고 혁신(?)적인 언어라고 생각했습니다. 문자열을 인덱스로 슬라이싱 하다니! 어떻게 프로그래밍 언어에 이런 짓을 할 생각을 했지? 라면서요. 사족은 접고. 본격적으로 들어가면,

 문자열 슬라이싱은 말 그대로 문자열을 자르는 겁니다. 예를 들어서, 앞의 MyNameIs라는 문자열 앞의 [2]인덱스 앞을 자르고 싶다, 하면 그렇게 할 수 있고, [2]부터 [5]까지 자르고 싶다 하면, 그렇게 할 수도 있습니다. 그러면 어떻게 그렇게 할까? 는 코딩 하면서 보면 되겠습니다.

 

 

 

[3]번 index전까지 자르고 출력해 보고 싶다. 하면 [0:2]이렇게 쓰면 되는데, 이건 0 에서 2즉, 3번 전까지를 의미합니다. 반면에 :는 모든 string을 의미 합니다. 따라서 [0:] 이렇게 쓰면 0번째에서 남은 모든 string을 의미하게 되어 모든 string을 출력하게 되겠죠. 또한 슬라이싱은 index에서 쓸 수 있는 것을 모두 쓸 수 있기 때문에 -1, -2, -3도 모두 쓸 수 있습니다. 따라서 [4:-1]은 4번째인 m부터 -1번째 전인 I까지를 출력하게 되겠죠.

 

이제 남은 것은 문자열 함수인데, 해당 부분은 문자열에서만 사용하고 다른 부분에서는 그렇게 중요하게 사용되지 않습니다. 하지만 이 역시 가볍게 파이썬 언어에서 가볍게 다뤄서는 안 될 주제이기 때문에 별도의 테마에서 다루도록 하겠습니다.

 

 

 

 

 파이썬에서 의외로 자료형은 그다지 중요하지 않습니다. 물론 파이썬만을 이용해서 코딩하시는 분들은 자료형도 잘 숙지하고 하셔야 하는 부분이기는 하지만 말입니다. 즉, 이번 강에서는 이러이러한 자료형이 있다. 정도만 서술하고 넘어가도록 하겠습니다. 이유인 즉, Numpy로 배열을 일일히 선언하지 않고 넘어 갈 수 있고 정수, 실수형은 거의 사용하지 않기 떄문입니다. (제가 기존에 C언어를 조금 코딩하다가 넘어왔기 때문에 이 부분에서 많이 햇갈렸었습니다.)

 

 강의는 제가 짧다고 생각하는 부분은 IPython을 사용하여 진행됩니다. 그리고 저는 코딩을 우분투에서 하지만 포스팅은 윈도우에서 하기 때문에 윈도우에서 아나콘다를 깔아서 하기 때문에 이 부분은 오해 없으시기 바랍니다 ㅎㅎ 그럼 먼저 iPython을 키고 간단하게 정수를 입력해 봅시다.

 

 

1. 숫자형 연산자와 포맷팅

 

i 에 2 를 먼저 대입해 줍니다. 그런 다음에 문자열을 포맷팅해 주려면 어떻게 해 줘야 할까요? 일반적으로 i에 2를 대입해 주려면 다른 언어에서는 int i 처럼 먼저 타입을 선언해 준 다음에 값을 대입 해 줘야 할 것 같지만 파이썬에서는 그럴 필요가 없습니다 그냥 i=2이렇게 해주면 되니까 편리하죠. 그래서 일반적으로 프로그램 언어를 처음 접할 때 파이썬으로 접하라고 합니다. 이런 장점이 있으니까요. (하지만 다른 프로그램 언어를 접한 사람이 접근 하기에는 좀 당황스럽 더군요. 뭐 이런 언어가 다 있어 이런....생각이 들더군요. 좀.)

 

 

 

간단한 포맷팅은 위와 같이 합니다. i의 실수형 포맷을 지정하면 위 그림과 같이 실수형 포맷이 주루룩 나오고, 실수를 잘라서 보고자 하면 %.2f처럼 보면 됩니다. 그리고 정수형으로 그냥 보고 싶다고 한다면 %d로 지정하고 보면 되는데, 이는 다른 프로그래밍 언어를 접한 분이시라면 모두 알고 있는 사항 이시겠죠.

하지만 모르시는 분들을 위해서 간단히 자주 쓰는 format들을 정리를 하면 다음 표와 같습니다.

 

%d 

정수형

 %f

실수형

 %c

문자형(한글자, 한글자) 

 

 

format 함수로도 문자열을 지정하는 것이 가능한 걸로 알고 있는데 기초 수준에서는 그렇게 굳이 사용 할 필요가 없습니다. 라이브러리를 사용하면서 좀 더 간단하게 프린팅하기 위해서 format을 사용하는 걸로 알고 있습니다. 내친 김에 format 함수도 간단하게 사용법을 알아 볼까요?

 

 

포맷 함수는 생각보다 간단하게 작동합니다. { } 안에 출력하고자 하는 변수를 넣어주면 출력이 되는 형식입니다. 어떻게 보면 %보다 더 직관적이죠. 다만 %에 이미 익숙한 프로그래머들은 굳이 format함수를 사용 할 필요성을 느끼질 못하죠. 하지만 저는 어떻게든 사용해 보려고 노력을 합니다.

 

 소수 점 조절은 { } 안에 :. 을 넣어서 조절 합니다. %에 : 들어 간 거 외에는 거의 다를 게 없죠.

 

 또한 여러 변수들을 사용하고자 할 떄도 (여기에는 없지만)

 

print( { },{ },{ }.format( ) )

 

라고 써줌으로서, 간단하게 조절 할 수 있습니다. %에 비해서 그다지 모자랄 건 없어 보입니다. 다만 기존에 C나 JAVA에서 %에 익숙한 프로그래머들이 format함수를 사용하기 귀찮을 뿐 ㅎㅎ 개인적으로는 많이 format함수를 사용하고 싶은데 잘 안되네요 ㅠㅠ 

 

 

 

 아무튼 본론으로 돌아와서, 위에 문자열 자료형의 포맷팅을 언급했지만 지금까지 파이썬 코딩을 한지는 얼마 되지 않았지만 문자형을 써 본 적이 거의 없습니다. 굳이 사용할 떄면 명령어 지정 할 떄 정도...? 대부분 String으로 대체했습니다. String에 대해서는 다음에 언급하도록 하겠습니다. 매애우 길기 때문이죠 ㅎㅎㅎ

 관련된 함수들도 많고, 슬라이싱, 이스케이프 함수 인덱싱 등등...여러가지를 봐야 합니다.

 

저 같은 경우는 문자열 함수를 많이 사용하지는 않았습니다만, 문자열이랑 뒤에 나올 리스트랑 많이 통하는 부분이 많아서 깊게 설명하고 넘어가도록 하겠습니다.

 

 추가적으로 개인적으로 숫자형에서 중요하다고 생각하는 10진수를 2진수로 바꾸는 작업인 bin()함수에 대해서 알아 보겠습니다.

C언어에서는 함수를 만들어서 사용해야 했지만, 파이썬에서는 그럴 필요 없이 그냥 내장 함수가 있습니다.

 

위와 같이 앞에 0b만 제거해 주고 쓰시면 됩니다. 따로 검색하지 마시고 알아 두시라고 포스팅 해 둡니다.

아, 그리고 혹시 2진수를 따로 10진수로 바꾸는 편리한 방법이 있으면 알려 댓글로 알려주셨으면 (굽신...굽신...) 합니다.. 제가 검색 능력이 딸려서 찾지를 못하는 건지 그냥 없는 건지 모르겠습니다 ㅎㅎ

 

 

그럼 다음엔 String의 사용 방법에 관해서 뵘도록 하겠습니다!  모두 굳밤 하세요~

우분투에서 프로그래밍 할 때 VIM으로 프로그래밍 할 수도 있고, 또 VIM이 잘 맞으시는 분들도 있으실 수도 있겠지만 개인 적으로는 잘 맞지 않더라구요. 일단 디버깅 툴이 없어서 불편합니다. 간단하고 가볍긴 한데, 내가 틀리게 하고 있는지 맞게 하고 있는지 어디가 틀렸는지 이런 걸 잘 짚어주지도 않고 그래서 말입니다 ㅠㅠ

 

VIM도 .bash에 파일 설정을 해 주시면 꽤 좋은 기능 등을 제공해 주었던 걸로 기억을 하니(여기서는 포스팅 하지 않도록 하겠습니다)써보는 것도 좋겠습니다. 물론 여기서 이 글을 보고 게시는 분들은 VIM이 맞지를 않아서 여기까지 오신 것이 겠지만요ㅎㅎ


설치 과정은 간단합니다. iPython의 경우 간단하게 conda로 설치 하면 되고,

visual code의 경우, 1) visual code 다운로드 2) 관련 의존적 패키지 다운로드 3) 1)번에서 다운 받은 의존적 패키지 다운 받기 4) visual code 압축 풀고실행하기로 진행이 됩니다. 그럼 본격적으로 실행해 봅시다.


1. iPython 설치


iPython의 경우 단순히 Conda pacakage이므로 설치하기 매우 쉽습니다. 단순히

 

Conda install iPython

 

해당 명령어를 커맨드 창에 입력하기만 하고 앞으로 커맨드 창에 iPython을 입력하기만 하면 iPython shell이 실행이 됩니다. 여기서 필요한 패키지 import하고, 코딩하시면 됩니다. 주로 잘막잘막한 코딩을 하거나 Test 코딩을 할 때 사용을 합니다만, 저는 주로 Jupyter notebook을 사용합니다. iPython은 원격으로 사용 할 때 처럼 정말 환경이 안 좋을 때나 다 완성한 코드를 Test해서 결과를 출력/비교 해 볼 때 주로 사용 합니다.

 

2. VS CODE 설치


vs code 설치가 main이죠. IPython은 그냥 맛보기고 ㅎㅎ 제 경우 Jupyter notebook을 test용도로, vs code를 실제 build용도로 쓰는 것처럼, iPython을 테스트 용도로 돌리고 vs code를 빌드 용도로 돌릴 수도 있으니까요 ㅎㅎ 아무튼 실제 설치로 돌입하면,

 

참고 링크: http://shshsh.tistory.com/132


 

1) Visual Code의 공식 사이트를 가서 다운 받습니다.

 

 

MS 사에서 Visual Studio 처럼 무료로 배포한 IDE이기 때문에 바로 다운 받을 수 있습니다. 인터페이스 역시 Visual studio와 비슷하기 때문에 기존에 윈도우즈에서 Visual Studio를 사용하시던 분은 금방 적응 하실 수 있을 겁니다. (제가 그랬습니다.^^) 참고로 우분투에서의 확장자는 .deb입니다. 햇갈리셔서 다른 것 다운 받으시지 말라고 알려 드립니다!

 

 

2) 관련 의존적 패키지를 설치합니다.

 

참고 링크를 보시면 아시겠지만, 그냥 설치하면 에러를 출력합니다. 저도 멋 모르고 우분투에서 윈도우즈 마냥 압축 풀고 Visual code 더블클릭했다가 에러나서 당황했던 기억이 납니다 ㅎㅎ 아무튼 그냥 Visual code를 실행하면 에러가 나기 때문에 관련 의존적 패키지들을 설치해 줍니다.  

 

sudo apt-get install gconf-service-backend gconf-service gconf2-common lib-gconf2-2-4

 

 

 

위 그림과 같이 의존성 패키지가 전부 업그레이드 되면 문제 없이 된 것 입니다.

 

 

3) 다운 받은 VS CODE의 압출을 풀고 실행합니다.

 

 

다운은 기본적으로 Downloads 폴더에 받아져 있습니다. 따라서  cd ./Downloads로 Downloads폴더로 이동한 다음 다음과 같이 압축을 풀고 실행해 줍니다. 그러면 뭐뭐 설정한다고 나온 다음 알 수 없는 글자들이 나옵니다. 글자 중에 Error나 빨간 글자만 안 뜨면 설치에 성공한 것입니다. ㅎㅎ

 

sudo dpkg -i (다운 받은 VS CODE 이름)

 

 

 

 

 

그러면 다음과 같이 VS CODE관련 아이콘이 짜잔하고 떡하니 생긴 것을 볼 수가 있습니다. 왠지 기분이 좋네요 ㅎㅎ 처음에 VS CODE 설치에 성공했을 때의 기분이 떠오르면서 ㅎㅎ 지금은 아무렇지도 않게 설치하지만 처음에는 엄청 해맸었죠 ㅠㅠ

 

 

 

VS CODE는 MS에서 개발한 IDE답게 Python 언어 뿐만 아니라 C언어 뿐만 아니라 C++ ,HTML, JAVA, JAVASCRIPT, 안드로이드 등 다양한 언어를 지원합니다. 처음 VS CODE를 설치하시면 Extension에서 어느 언어를 사용 할 거냐고 물어봅니다.. 그러면 , c, c++ 파이썬 등 사용 하실 언어를 고르시고, install을 클릭 하시면 됩니다. 물론 전 파이썬만 다룰 거지만요 ㅎㅎ 저는 한 번 VS CODE를 설치해서 그런지 Extension에서 C를 쳐야 관련된 언어들이 나오네요. 어쨌든, 이것으로 VS CODE관련 설치는 끝이 났습니다.

 

파이썬만 개발하실 거면 Anaconda에서 기본으로 제공하는 Spyder나 Jupyter notebook도 그리 나쁘지 않은 선택입니다. 물론 개인 취향이지만 말입니다 ㅎㅎ 저는 Jupyter notebook은 line by line으로 에러 출력 해 주는 게 편하더라고요 ㅎㅎ 이런 건 개인 취향입니다 ㅎㅎ

참고 URL: http://hochulshin.com/ubuntu-1604-hangul/

 

 오늘은 우분투 영문으로 설치하고 한글을 가능하게 하는 법을 알아보려고 합니다. 처음에 간단하게 보고 설치하려고 갔다가 매우 애먹은 경험이 있어서 제 경험도 공유하고 잊어먹지 않게 포스팅하는 게 목적이라서 스크린샷과 함께 각 명령어와 어디서 무엇을 해야 하는지 자세하게 설명을 했습니다. 그럼 설치를 해 봅시다.

 

 

 우분투는 기본적으로 ibus 형식으로 언어를 따라가기 때문에 맨 처음에 fcitx를 다운 받아야 합니다. 그리고 이를 다운로드하기 위해서 다음과 같은 과정을 거쳐야 하는데, 먼저 커맨드 창을 열고 관리자 계정으로 fcitx를 설치해 줍니다. 그리고 language pack을 열어 주면,

 

1. sudo apt-get install fcitx-hangul # language에 한글이 설치됨.

2. System setting > Language Support를 실행해서 아직 완전히 설치되지 않았다고 설치되는 language pack 설치

 

language support는 이런 그림입니다. 우분투를 처음 접하는 분들은 모를 수도 있으므로 화면을 첨부합니다.

 

 

language support를 열면 설치되지 않은 language pack 설치할지 말지를 물어 봅니다. 그러면 묻지도 말고 바로 language pack을 설치해 줍니다.

 

 

3. keayboard input method system: ibus > fcitx로 변경

 

 

기본은 ibus에 체크되어 있습니다. fcitx로 체크해 준 다음, 확인 버튼을 클릭해 줍니다.

 

 

4. 그리고 시스템 언어가 제 그림처럼 한글이 되기를 원하면 한국어를 맨 위로 옮겨준 다음에 아래 그림과 같이 language support pack의 Apply System Wide를 클릭합니다. 그리고 키보드 입력기를 ibus > fcitx로 변경합니다. (처음에는 Apply System Wide를 클릭해도 아무 반응을 보이지 않는다. 재부팅 해야 언어가 바뀜.) 

 

 

 

 

 

5. 이제 화면 맨 위의 키보드 모양을 클릭 한 다음, Current input method를 클릭, Hangul설정과 한/영 변환만 설정하면 한글 설정이 끝나니 힘내세요. 거의 다 왔습니다!

 

 

6. 첫번째 탭인 input method에서 기본인 English(U.S) 다음에 Hangul이 위치하도록 합니다.

 

 

 

Hangul은 + 버튼을 누르고 그냥 찾으면 안 나오기 때문에 반드시 '현재 언어만 표시' 옵션 체크를 풀고 찾아야 합니다.

 

 

Hangul이 추가 된 걸 확인 하고,  두 번째 탭인 Global Configuration으로 이동하고 난 다음,

 

 

7. 다음과 같이 Triger를 변환 해 줘서 한/영 키 변환을 완료 합니다.

 

7.1 제일 먼저 Trigger Input Method는 왼쪽 오른쪽 모두 설정하고 Extrakey for trigger input method는 Disable로 설정

7.2 그 다음에  Program > Share state Among Window > All을 선택합니다.

 

8. 시스템 언어 설정을 해 줍니다. 다음과 같이 스패너 모양을 클릭하고 설정 화면으로 이동한 다음.

 

 

English(U.S)를 맨 위에 오도록 하고, Korean(Hangul)을 그 다음에 위치도록 하고, 언어/형식은 그림과 같이 되어 있는지 확인.

 

 

 

9. 마지막으로 재부팅을 하면 경로 언어를 바꾸겠습니까? 라는 물음과 함께 정상적으로 한/영 변환이 되는 것을 확인 할 수 있습니다. 메모장이나 브라우저에 한/영 변환이 되는지, 한글이 쳐 지는지 확인을 하시면 됩니다. 안 되면 위 과정에서 뭔가 정상적으로 되지 않은 것입니다.

 

지금까지 쭉 우분투 18.04에서 영어로 설치 한 다음 한글 설정 하는 법을 알아 보았습니다. 영어로 설치하면 인터넷을 따로 잡아주는 문제가 발생해서 차라리 이렇게 한글 설정을 해주는 편이 개인적으로 편해서 이렇게 설정을 하는데 그게 아닌 사람들은 그냥 한글로 설치를 하는 게 좋겠습니다.

 

 

 

 

 

 

 

 

 

 

+ Recent posts