26 Sep 2017 » python

2017-09-26-python_2

Container

List

string

Dictionary

tuple

zip

이번 포스팅에서는 사전, 튜플, zip에 대해 알아보자.


Dictionary 사전

In [1]:
tel = {'emmanuelle': 5752, 'sebastian': 5578}
tel
Out[1]:
{'emmanuelle': 5752, 'sebastian': 5578}
In [2]:
tel['sebastian']
Out[2]:
5578
In [3]:
# add new data
tel['francis'] = 5915
tel
Out[3]:
{'emmanuelle': 5752, 'francis': 5915, 'sebastian': 5578}
In [4]:
tel.keys()   
Out[4]:
dict_keys(['emmanuelle', 'sebastian', 'francis'])
In [5]:
tel.values()
Out[5]:
dict_values([5752, 5578, 5915])
In [6]:
# key를 사전 내에서 검색 / value는 검색이 안된다.
'francis' in tel
Out[6]:
True

Tuple 튜플

str처럼 immutable!

In [7]:
u = (0, 2)
u
Out[7]:
(0, 2)
In [8]:
t = 12345, 54321, 'hello!'
t
Out[8]:
(12345, 54321, 'hello!')
In [9]:
t[0]
Out[9]:
12345

튜플은 replace가 안된다.

In [10]:
t[0] = 1
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-0a69537257d5> in <module>()
----> 1 t[0] = 1

TypeError: 'tuple' object does not support item assignment

Reference, Mutable, Immutable

In [11]:
a = [1, 2, 3]
b = a
In [12]:
a, b
Out[12]:
([1, 2, 3], [1, 2, 3])
In [13]:
id(a), id(b)
Out[13]:
(4530212104, 4530212104)

a, b가 같은 id를 할당받아, 같은 곳을 가리키는 것을 확인할 수 있다.

In [14]:
a[0] = 11
In [15]:
a, b
Out[15]:
([11, 2, 3], [11, 2, 3])
In [16]:
b[1] = 'hi!'
In [17]:
b, a
Out[17]:
([11, 'hi!', 3], [11, 'hi!', 3])

따라서 a, b가 각각 바뀜에 따라 함께 변경되는 것을 확인할 수 있다.(inplace)

In [18]:
a = [1, 'hi!', 3]
In [19]:
b = 1
In [20]:
a
Out[20]:
[1, 'hi!', 3]
In [21]:
id(a), id(b)
Out[21]:
(4526229896, 4494932544)

가리키는 id가 달라짐

zip

같은 shape의 위치를 묶어 주는 메소드!

사전, 리스트, 튜플과 함께 사용하면 유용하다!

In [22]:
a = [1, 2, 3]
b = [10, 20, 30]
In [23]:
c = zip(a, b)
c
Out[23]:
<zip at 0x10e058188>
In [24]:
list(c)
Out[24]:
[(1, 10), (2, 20), (3, 30)]
In [25]:
dict(c)
Out[25]:
{}

위에서 보듯이 zip을 한 상태에서 하나의 컨테이너에 넣으면 두 번째에는 비어있음을 확인할 수 있다.

pop( ) 처럼

In [26]:
c = zip(a, b)
c
dict(c)
Out[26]:
{1: 10, 2: 20, 3: 30}
In [27]:
c = zip(a, b)
d = zip(*c)
list(d)
Out[27]:
[(1, 2, 3), (10, 20, 30)]
In [28]:
c = zip(a, b)
e = zip(*zip(*c)) 
list(e)
Out[28]:
[(1, 10), (2, 20), (3, 30)]

zip(*c)처럼 *를 zip안에 넣으면 묶였던 것이 풀린다.


Code Line-Break 줄 띄어쓰기

리스트나 딕셔너리 정의, 함수 호출/정의 등의 경우에는 문법적으로 완료되지 않으면 그냥 다음 줄 사용 가능

그렇지 않은 경우 backslash( \ )를 사용

In [29]:
a = [1, 2, 3,
     4, 5, 6]
a
Out[29]:
[1, 2, 3, 4, 5, 6]
In [30]:
a = 1 + 3 + 4 +
    5 + 6 + 7
  File "<ipython-input-30-4f831cc21792>", line 1
    a = 1 + 3 + 4 +
                   ^
SyntaxError: invalid syntax
In [31]:
a = 1 + 3 + 4 + \
    5 + 6 + 7
a
Out[31]:
26


Related Posts