26 Sep 2017 » python

2017-09-26-python_1

Container

List

string

Dictionary

tuple

이번 포스팅에서는 리스트와 문자열에 대해 알아보자.

List

데이터 분석을 할 때는 List를 사용하지 않는다.

  • 느리기 때문에

대신 np.array( ) 사용한다.

In [1]:
l = ['red', 'blue', 'green', 'black', 'white']
type(l)     
Out[1]:
list

Indexing 인덱싱

In [2]:
l[0], l[1], l[-1], l[-2]
Out[2]:
('red', 'blue', 'white', 'black')

Slicing 슬라이싱

In [3]:
## list[start:stop:step]
l[2:4], l[2:], l[:2], l[::2]
Out[3]:
(['green', 'black'],
 ['green', 'black', 'white'],
 ['red', 'blue'],
 ['red', 'green', 'white'])

List는 mutable, 확장 및 변형이 가능하다.

In [4]:
l
Out[4]:
['red', 'blue', 'green', 'black', 'white']
In [5]:
l[0] = 'yellow'
l
Out[5]:
['yellow', 'blue', 'green', 'black', 'white']
In [6]:
l[2:4] = ['gray', 'purple']
l
Out[6]:
['yellow', 'blue', 'gray', 'purple', 'white']

자료형이 달라도 리스트에 담을 수 있다.

In [7]:
list_1 = [3.14, -200, 'hello']
In [8]:
list_1
Out[8]:
[3.14, -200, 'hello']

Methods 메소드

Add

Remove

In [9]:
L = ['red', 'blue', 'green', 'black', 'white']
In [10]:
L.append('pink')
In [11]:
L
Out[11]:
['red', 'blue', 'green', 'black', 'white', 'pink']
In [12]:
# 가장 마지막 원소를 내뱉고, 리스트에서도 뺀다.
L.pop()
Out[12]:
'pink'
In [13]:
L
Out[13]:
['red', 'blue', 'green', 'black', 'white']
In [14]:
# 리스트를 합친다., in-place = True , 
L.extend(['pink', 'purple'])
In [15]:
L
Out[15]:
['red', 'blue', 'green', 'black', 'white', 'pink', 'purple']
In [16]:
## 제일 마지막 원소는 뺀다.
L = L[:-2]
L
Out[16]:
['red', 'blue', 'green', 'black', 'white']

Reverse

In [17]:
r = L[::-1]
r
Out[17]:
['white', 'black', 'green', 'blue', 'red']
In [18]:
r.reverse()
r
Out[18]:
['red', 'blue', 'green', 'black', 'white']
In [19]:
r2 = list(L)
r2
Out[19]:
['red', 'blue', 'green', 'black', 'white']
In [20]:
# Inplace = True
r2.reverse() 
r2
Out[20]:
['white', 'black', 'green', 'blue', 'red']

리스트의 연산

원소가 다음처럼 합쳐진다.

In [21]:
r + L
Out[21]:
['red',
 'blue',
 'green',
 'black',
 'white',
 'red',
 'blue',
 'green',
 'black',
 'white']
In [22]:
r
Out[22]:
['red', 'blue', 'green', 'black', 'white']
In [23]:
r * 2
Out[23]:
['red',
 'blue',
 'green',
 'black',
 'white',
 'red',
 'blue',
 'green',
 'black',
 'white']

Sort

In [24]:
# new object
sorted(r), r
Out[24]:
(['black', 'blue', 'green', 'red', 'white'],
 ['red', 'blue', 'green', 'black', 'white'])
In [25]:
# in-place
r.sort()
r
Out[25]:
['black', 'blue', 'green', 'red', 'white']
In [ ]:
## 활용 매서드를 출력할 수 있다. 또한, r.  + tab키를 눌러 메서드를 확인할 수 도 있다.
dir(r)

String 문자열

문자열도 컨테이너이다!

In [26]:
s = 'Hello, how are you?'
s
Out[26]:
'Hello, how are you?'

Multi-line string

In [27]:
s = '''Hello,
       how are you'''
s
Out[27]:
'Hello,\n       how are you'
In [28]:
s = """Hi,
what's up?"""
s
Out[28]:
"Hi,\nwhat's up?"
In [29]:
s = "Hi, what's up?"
s
Out[29]:
"Hi, what's up?"

문자열도 컨테이너이므로 인덱싱과 슬라이싱이 가능하다.

In [30]:
a = "hello"
In [31]:
a[0], a[1], a[-1]
Out[31]:
('h', 'e', 'o')
In [32]:
a_1 = "hello, world!"
In [33]:
a_1[3:6], a_1[2:10:2], a_1[::3]
Out[33]:
('lo,', 'lo o', 'hl r!')

문자열은 immutable!!

아래처럼 바로 대체할 수 없다.

In [34]:
a[2] = 'z'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-34-d57c4312feba> in <module>()
----> 1 a[2] = 'z'

TypeError: 'str' object does not support item assignment
In [35]:
# inplace = False
a.replace('l', 'z'), a
Out[35]:
('hezzo', 'hello')

문자의 구성을 바꾸려면, 위처럼 바꾸고 새로운 변수로 선언해야 한다.



Related Posts