본문 바로가기
Language/Python

RND(Right! Now! Develop!) Study - Python Step. 02 자료형_02

by 태하팍 2014. 8. 17.
반응형

RND(Right! Now! Develop!) Study - Step. 02 자료형02


 개요

 학습 구성

 스터디 인원

 학습 시작

 참고 사이트


# 개 요

이번 포스팅에서는 파이썬의 자료형에 대해서 알아보도록 하겠습니다.

더욱 더 자세한 내용은! 점프 투 파이썬 위키 사이트 링크 : https://wikidocs.net/1



# 학습 구성

자료형과 제어문 파이썬의 자료형(숫자형, 문자열, 리스트, 터플, 딕셔너리등)

이번 학습은 리스트, 터플, 딕셔너리에 대해서 알아보도록 하겠습니다.

# 스터디 인원
    - anycoding(손현태)

# 학습 시작

- 환경 : Python3


Let's Start~!



금일은 자료형 중 리스트, 터플, 딕셔너리에 대해서 살펴보도록 하겠습니다.

먼저 리스트에 대해서 살펴보도록 하죠!


1) 리스트 : List를 만들때는 대괄호로 감싸주고([]) 쉼표(,)로 구분을 해줍니다.

  - 표현방법 : acet = [1,3,5,7,9]

  리스트는 어떠한 자료형도 포함시킬수가 있습니다.

>>> a = []

>>> b = [1, 2, 3]

>>> c = ['Life', 'is', 'too', 'short']

>>> d = [1, 2, 'Life', 'is']

>>> e = [1, 2, ['Life', 'is']]


리스트에도 문자열 처럼 인덱싱과 슬라이싱이 있습니다.

그중 인덱싱에 대해서 먼저 알아보도록 하겠습니다.

>>> a = [1, 2, 3]

>>> a

[1, 2, 3]


>>> a[0]

1


>>> a[0] + a[2]

4


>>> a[-1]

3


문자열하고 표현방법만 다르고 인덱싱과 슬라이싱 부분은 같네요

 

인덱싱 중 조금 특이한 점은 리스트는 어떠한 자료형도 포함 시킬수가 있기 때문에

리스트 안에 리스트를 넣을 수가 있습니다.

>>> a = [1, 2, 3, ['a', 'b', 'c']]


이런 친구들을 접근할 때는 

 인덱스

 0

 1

 2

 3

 값

 1

 2

 3

 ['a','b','c']


>>> a[0]

1

>>> a[-1]

['a', 'b', 'c']

>>> a[3]

['a', 'b', 'c']


라는 결과를 얻을 수가 있겠습니다. ㅎㅎㅎ


그리고 더욱 더 궁금해 할분도 계신 것인데 바로!! ['a', 'b', 'c']안에 있는 친구들은 어떻게 뽑아내야 할까요??

>>> a[-1][0]

'a'


또 다른 예를 보면 3중 리스트 구조!!

>>> a = [1, 2, ['a', 'b', ['Life', 'is']]]

>>> a[2][2][0]

'Life'


a[2][2][0]에서 a[2]는 ['a', 'b', ['Life', 'is']] 가 될 것이다. a[2][2]는 ['Life', 'is']가 될 것이다.

마지막으로 a[2][2][0]는 0번째이므로 'Life'가 될 것이다! good~


이제는 슬라이싱에 대해서 알아보겠습니다.

리스트 슬라이싱 역시 문자열 슬라이싱이랑 다른게 없다.

- 리스트 슬라이싱

>>> a = [1, 2, 3, 4, 5]

>>> a[0:2]

[1, 2]


- 문자열 슬라이싱

>>> a = "12345"

>>> a[0:2]

'12'


약간 리스트형 이다보니 조금 복잡하게는 느껴질 수 있을 것이다.

아래의 예를 보도록 하자.

>>> a = [1, 2, 3, ['a', 'b', 'c'], 4, 5]

>>> a[2:5]

[3, ['a', 'b', 'c'], 4]


>>> a[3][:2]

['a', 'b']


이제는 리스트를 가지고 합치기, 반복, 수정, 삭제 등을 알아보겠습니다.

역시나 문자열과 동일하게 + 와 *를 할 수 있다.


- 리스트 합치기

>>> a = [1, 2, 3]

>>> b = [4, 5, 6]

>>> a + b

[1, 2, 3, 4, 5, 6]


- 리스트 반복

>>> a = [1, 2, 3]

>>> a * 3

[1, 2, 3, 1, 2, 3, 1, 2, 3]


- 리스트 수정 예1

>>> a = [1, 2, 3]

>>> a[2] = 4

>>> a

[1, 2, 4]


- 리스트 수정 예2

>>> a[1:2]

[2]

>>> a[1:2] = ['a', 'b', 'c']

>>> a

[1, 'a', 'b', 'c', 4]


- 리스트 삭제 예1

현재 a가 [1, 'a', 'b', 'c', 4] 인 상태에서 a[1:3] = []로 만든다. 즉, 삭제!

>>> a[1:3] = []

>>> a

[1, 'c', 4]


- 리스트 삭제 예2

del이라는 파이썬 내장함수로 삭제가 가능하다!! 두둥~

>>> a

[1, 'c', 4]

>>> del a[1]   // 'c'를 삭제 한다는 뜻이다!

>>> a

[1, 4]


# 참고



마지막으로 리스트관련 함수들에 대해서 알아보도록 하겠습니다.


함수명 

 설 명

 내 용

 예 제

 비 고

 append

 리스트에 요소 추가

 append(x)는 리스트의 맨 마지막에 x를 추가시키는 함수

예제 1)

>>> a = [1, 2, 3] 

>>> a.append(4)

>>> a

[1, 2, 3, 4]


예제2)

>>> a.append([5,6])

>>> a

[1, 2, 3, 4, [5, 6]]

 

 sort

 리스트 정렬

 sort 함수는 리스트의 요소를 순서대로 정렬하여 정렬된 값을 돌려준다.

예제1)

>>> a = [1, 4, 3, 2]

>>> a.sort()

>>> a

[1, 2, 3, 4]


예제2)

>>> a = ['a', 'c', 'b']

>>> a.sort()

>>> a

['a', 'b', 'c']

 

 reverse

 리스트 뒤집기

 reverse 함수는 리스트를 역순으로 뒤집어준다.

>>> a = ['a', 'c', 'b']

>>> a.reverse()

>>> a

['b', 'c', 'a'] 

 

 index

 위치 반환

 index(x) 함수는 리스트에 x라는 값이 있으면 그 위치를 돌려준다.

>>> a = [1,2,3]

>>> a.index(3)

2

>>> a.index(1)

 >>> a.index(0) 

처럼 인덱스를 찾지 못하면 오류가 난다.

 insert

리스트에 요소 삽입 

 insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수이다.

예제1)

>>> a = [1,2,3]

>>> a.insert(0, 4)

[4, 1, 2, 3] 


예제2)

>>> a.insert(3, 5)

[4, 1, 2, 5, 3]

 

 remove

리스트 요소 제거 

 remove(x)는 첫번째 나오는 x 를 삭제하는 함수이다. 

 아래의 예는 a가 3이라는 값을 두개 가지고 있을경우 첫번째 3만을 제거하는 것을 보여준다.

>>> a = [1,2,3,1,2,3]

>>> a.remove(3)

[1, 2, 1, 2, 3]

 

pop 

 리스트 요소 끄집어 내기

 pop() 함수는 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다.

예제 1)

>>> a = [1,2,3]

>>> a.pop()

3

>>> a

[1, 2] 


예제2)

>>> a = [1,2,3]

>>> a.pop(1)

2

>>> a

[1, 3]

 

 count

 갯수 세기

 count(x)는 리스트 중에서 x가 몇 개 있는지를 조사하여 그 갯수를 돌려주는 함수이다.

>>> a = [1,2,3,1]

>>> a.count(1)

 

 extend

리스트 확장 

 extend(x)에서 x에는 리스트만 올 수 있다. 원래의 a 리스트에 x 리스트를 더하게 된다.

>>> a = [1,2,3]

>>> a.extend([4,5])

>>> a

[1, 2, 3, 4, 5] 

 a.extend([4,5])는

 a += [4,5]와 동일하다.


2) 터플(tuple)

 터플 또는 튜플 이라고 불립니다.

 터플이란 리스트와 몇 가지 점을 제외하곤 모든 것이 동일하다. 그 다른 점은 다음과 같다.

  •  리스트는 [ 과 ] 으로 둘러싸지만 터플은 (과 )으로 둘러싼다.
  • 리스트는 그 값을 생성, 삭제, 수정이 가능하지만 터플은 그 값을 변화시킬 수 없다.

>>> t1 = ()

>>> t2 = (1,)   // 1개의 요소를 넣을려면 하나의 요소와 콤마가 필요하다!

>>> t3 = (1,2,3)

>>> t4 = 1,2,3  // 괄호가 생략가능하다!

>>> t5 = ('a', 'b', ('ab', 'cd'))


터플의 인덱싱, 슬라이싱, 더하기와 반복에 대해서 알아보겠습니다.

값을 변화시킬 수 없다는 점만 제외하면 리스트와 동일하기 때문에 간단하게 살펴보겠습니다.


- 인덱싱

>>> t1 = (1, 2, 'a', 'b')

>>> t1[0]

1

>>> t1[3]

'b'


- 슬라이싱

>>> t1 = (1, 2, 'a', 'b')

>>> t1[1:]

(2, 'a', 'b')


- 터플 더하기(합)

>>> t1 = (1, 2, 'a', 'b')

>>> t2 = (3, 4)

>>> t1 + t2

(1, 2, 'a', 'b', 3, 4)


- 터플 반복

>>> t2 = (3, 4)

>>> t2 * 3

(3, 4, 3, 4, 3, 4)


터플의 요소 값은 변경시킬 수 없다 터플의 요소값은 한 번 정하면 지우거나 변경할 수 없다. 


터플의 요소를 지우려고 할 때의 오류

>>> del t1[0]

Traceback (innermost last):

File "", line 1, in ?del t1[0]

TypeError: object doesn't support item deletion


터플의 요소를 변경 하려고 할 때

>>> t1[0] = 'c'

Traceback (innermost last):

File "", line 1, in ?t1[0] = 'c'

TypeError: object doesn't support item assignment



3) 딕셔너리

음...사전이란 뜻을 가진 딕셔너리!

즉, people 이란 단어에 ‘사람’, baseball 이라는 단어에 ‘야구’라는 뜻이 부합되듯이 딕셔너리는 Key와 Value라는 것을 한 쌍으로 갖는 자료형이다.  엄청...사용빈도가 높을 것 같은 친구!! ㅋㅋㅋ 

key&value형태이다보니 java에서의 map이나 json형식이 떠오른다.

anyways..더 알아가보자! ㅎㅎㅎ 


- 형태

{Key1:Value1, Key2:Value2, Key3:Value3 ...}


- 예제

>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}

위에서 key는 각각 ‘name’, ‘phone’, ‘birth’이고 그에 해당하는 value는 ‘pey’, ‘0119993323’, ‘1118’이 된다.

딕셔너리 dic의 정보

keyvalue
namepey
phone01199993323
birth1118

또한 아래와 같이 숫자1의 키에 값 'hi'를 넣거나

>>> a = {1: 'hi'}


아래와 같이 'a'문자에 리스트 [1,2,3]을 넣을 수도 있다.

>>> a = { 'a': [1,2,3]}


와우! 정리하기 빡세네욤 ㅋㅋㅋ 일단 여기까쥐~~




# 참고사이트

  anyjava님 : http://blog.anyjava.net/114


        - END -





반응형