Archive/★ Python

[Python Study] 2부. Python 자료형 (2/2)

anyjava 2014. 9. 18. 00:41

Python 자료형 (2/2)

자료형 첫번째 글을 올리고 두번째 글 올리는데 까지 오래 걸렸네요. 회사에서 간단한 프로젝트가 있어서 그거 처리하느라 노곤노곤... 자 그럼 시작해 볼까요~?

3) 리스트

데이터 형들의 집합을 나타내는 방법이다. 사용하는 방법은 다음과 같다.

>>> a = []
>>> b = [1, 2, 3]
>>> c = ['Life', 'is', 'too', 'short']
>>> d = [1, 2, 'Life', 'is']
>>> e = [1, 2, ['Life', 'is']]

리스트의 인덱싱과 슬라이싱

문자열에서 사용했던 것과 마찬가지로 인덱싱과 슬라이싱을 지원한다. 인덱싱과 슬라이싱을 사용하면 아주 편리하게 리스트를 제어하거나 접근할 수 있다. 간단하게 정리 해보도록 하자.

  • index 값을 이용하여 접근가능하다.
  • -1은 리스트의 젤 마지막 값을 접근한다.
  • e[-1][0] 형태로 2차원배열도 접근한다.

슬라이싱 역시 문자열과 거의 동일하게 사용이 가능하다.

  • a[1:2] 와 같이 일부분만 잘라올 수 있다.
  • a[:3], a[2:] 와 같이 시작부터 3번째 까지, 혹은 2번째 부터 마지막까지 자를 수 있다.
  • 리스트 더하기도 가능하다

    >>> a = [1,2,3]
    >>> b = [4,5,6]
    >>> a + b
    [1,2,3,4,5,6]
    
  • a * 3 이라고 사용하면 변수 a에 있는 리스트값이 3번 반복 된다.

  • a[2]=1 과 같이 특정위치의 값을 수정가능하다.
  • a[1:2]=[1,2,3] 특정 위치를 리스트로 대치도 가능하다.
  • 리스트 삭제 방법
>>> a[1:3] = []
>>> a
[1, 'c', 4]

>>> a
[1, 'c', 4]
>>> del a[1]
>>> a
[1, 4]

리스트 관련 함수들

  • append(val) : 리스트에 요소를 추가한다.
  • sort() : 리스트 정렬
  • reverse() : 리스트 뒤집기
  • index(val) : 위치 반환, java 의 indexOf 메소드와 비슷하다고 보면된다.
  • insert( index, value ) : 리스트 삽입
  • remove(val) : 리스트에 해당값을 제거하기, 제일 처음 하나의 값을 제거한다.
  • pop([val]) : 리스트의 맨 마지막 요소를 끄집어 낸다.
  • count(val) : 리스트중 val 의 갯수가 몇개있는지 센다.
  • extend([1,2]) : 리스트의 확장 a += [1,2] 와 동일하다.

4) 터플(tuple)

리스트와 유사한 구조지만 몇가지 다른점이 있다. 어떤 다른점이 있는지 다음을 보도록 하자.

  • 리스트는 [ 과 ] 으로 둘러싸지만 터플은 (과 )으로 둘러싼다.
  • 리스트는 그 값을 생성, 삭제, 수정이 가능하지만 터플은 그 값을 변화시킬 수 없다.
>>> t1 = ()
>>> t2 = (1,)
>>> t3 = (1,2,3)
>>> t4 = 1,2,3
>>> t5 = ('a', 'b', ('ab', 'cd'))

리스트와 마찬가지로 인덱스 슬라이싱, 더하기, 곱하기가 가능하지만, 값의 변경은 불가능하다.

5) 딕셔너리 (Dictionary)

딕셔너리는 key=value 쌍을 이루는 데이터 구조라고 이해하면 쉬울것 같다. “이름” = “홍길동”, “생일” = “몇 월 몇 일” 등과 같은 구조로 이루어 진다.
이것은 요즘 나오는 대부분의 언어들도 갖고 있는 자료형으로 Associative array, Hash라고도 불린다.

예) 기본적은 딕셔너리
>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}

딕셔너리 사용하기

Key이용하여 Value얻기

>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99

딕셔너리 쌍 추가, 삭제하기

1) 쌍 추가

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

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

2) 삭제

>>> del a[1]
>>> a
{'name': 'pey', 3: [1, 2, 3], 2: 'b'}

딕셔너리 주의사상

  • 동일한 키값을 가지고 있을때에는 해당 키값으로 접근 할떄 어떤 값(value)가 리턴될지 알 수가 없다.
  • key로 이용되는 데이터형에는 리스트는 사용할수 없다. 하지만, 튜플은 가능하다. 즉, 변환 가능한 데이터 타입은 key값으로 사용 할 수 없다고 이해하면 쉬울것 같다.

딕셔너리 함수

Key리스트 만들기(keys)
>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])

>>> for k in a.keys():
...     print(k)
...
phone
birth
name

※ 파이썬 2.7 버전까지는 a.keys() 호출 시 리턴값으로 dict_keys 가 아닌 list 를 리턴한다. list 를 리턴하기 위해서는 메모리의 낭비가 발생하는데 파이썬 3.0 이후버전에서는 이러한 메모리 낭비를 줄이기 위해서 dict_keys 라는 객체를 리턴하게 되었다. 아래 소개될 dict_values, dict_items 역시 마찬가지로 파이썬 3.0 이후에 추가된 것들이다. 만약 파이썬 2.7에서와 같이 list 가 필요한 경우에는 list(a.keys()) 로 리스트 형태로 변환하여 사용하면 된다. dict_keys, dict_values, dict_items 등은 리스트로 변환하지 않더라도 기본적인 iterate성 구문(예: for문)들을 실행 할 수 있다.

Value리스트 만들기 (values)
>>> a.items()
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])
Key: Value 쌍 모두 지우기(clear)
>>> a.clear()
>>> a
{}
Key로 Value얻기 (get)
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'0119993323'

a[key] 로 접근 했을 떄, 해당 키값이 없다면 에러가 발생한다. 하지만 get(key)로 접근했는데 해당 key 값이 없다면 none값을 리턴한다.

딕셔너리 내에 찾으려는 키값이 없을 경우 디폴트 값으로 가져오도록 하고 싶을 때에는 get(x, '디폴트값')을 사용하면 편리하다.

해당 Key가 있는지 조사 (in)
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False

6) 집합 (Sets)

기본적으로 다음과 같이 set()함수를 이용하여 만들 수가 있다.

>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}

>>> s2 = set("Hello")
>>> s2
{'e', 'l', 'o', 'H'}

위 예제에서도 알 수 있듯이 집합(Sets)에는 2가지 특징이 있다.

  • 중복을 허용하지 않는다.
  • 정렬된 상태로 저장된다.

이런 특징 때문에 리스트의 중복을 제거하기위해 집합이 종종 이용되곤 한다.

교집합, 합집합, 차집합

  • 교집합 : & or intersection
  • 합집합 : | or union
  • 차집합 : - or difference

추가와 삭제

  • add( value ) : 특정 value 만 추가가 가능하다.
  • update( list ) : 특정 list 를 추가가 가능하다.
  • remove( value ) : 특정 value 값을 제거한다.

7) 참과 거짓

python 에서 여러 데이터 타입들이 참과 거짓으로 어떻게 표현되는지 표로 알아 보도록 하자.

참 or 거짓
"python"
""거짓
[1, 2, 3]
[]거짓
()거짓
{}거짓
1
0거짓
None거짓

다음 예는 while 문에서 위 내용을 어떻게 이용하는지 직접 예제를 통해서 알아 보도록 하자.

>>> a = [1,2,3,4]
>>> while a:
...     a.pop()
...
4
3
2
1

변수에 대해서는 중요한 내용으로 판단되어 다음번에 따로 좀 자세히 다루도록 하겠다.



위 내용은 다음 사이트를 참고하였음을 알려 드립니다.

https://wikidocs.net/1 점프투파이썬



반응형