Python

02. 문자열, 리스트

김야키 2017. 9. 4. 15:36

02. 문자열, 리스트


1.    문자열 추가 함수

A.     startswith()함수

B.     endswith()함수

C.     replace()함수

D.    upper(), lower()함수

E.     join함수

 

2.    데이터형 에러

A.     데이터 형 확인 : type(데이터)

>>> type('350')

<class 'str'>

>>> type(350)

<class 'int'>

 

B.     서로 다른 데이터형을 연산했을 시

'350'+350

Traceback (most recent call last):

  File "<pyshell#60>", line 1, in <module>

    '350'+350

TypeError: must be str, not int

C.     서로 다른 타입의 데이터를 연산했을 시 출력되는 오류

D.    TypeError : 에러명

E.     must be str not int : 에러 상세 내용


 

3.    데이터형 변환

A.     변형할타입(데이터) : int(String데이터), double(int데이터) 등등

>>> int('350')

350

>>> type(int('350'))

<class 'int'>

B.     서로 다른 타입의 연산

>>> int('350')+350

700

 

4.    주소가 변하는 데이터, 변하지 않는 데이터

A.     변하는 데이터

>>> hello = '안녕하세요'       #hello 문자열형 변수 선언

>>> hello                          #hello 값 확인

'안녕하세요'

>>> id(hello)                      #hello 객체 식별자 확인

1817742198344                   #데이터 수정 전 객체 주소

>>> hello = '반갑습니다.'      #hello 변수 값 데이터 변경

>>> hello                          #hello 값 확인

'반갑습니다.'

>>> id(hello)                      #hello 객체 식별자 확인

1817742221696                    #데이터 수정 후 객체 주소

 

B.     변하지 않는 데이터(리스트형 선언[데이터])

>>> hello_list = ['안녕하세요!']           #리스트형 선언

>>> hello_list                                 #리스트 값 확인

['안녕하세요!']

>>> id(hello_list)                             #리스트 객체 식별자 확인

1817742054984                               #데이터 수정 전 객체 주소

>>> hello_list[0] = '반갑습니다.!'        #리스트 첫 번째 항목 값 변경하기

>>> hello_list                                 #변경된 리스트 값 확인

['반갑습니다.!']

>>> id(hello_list)                             #리스트 객체 식별자 확인

1817742054984                               #데이터 수정 후 객체 주소(변동없음)


 

5.    리스트형

A.     리스트형 선언 및 색인

                       i.         선언

>>> pockets = [4, 6, 1, 9]           #4개의 숫자형을 가진 리스트형 선언

>>> pockets                             #리스트형 변수 값 확인

[4, 6, 1, 9]

>>> type(pockets)                     #'pockets'변수의 타입 확인

<class 'list'>

                      ii.         값 확인

>>> pockets[0]            #첫 번째 값 확인

4

>>> pockets[-1]           #마지막 값 확인

9

>>> len(pockets)         #리스트형의 길이 확인

4

                     iii.         리스트 값 에러(리스트는 배열과 마찬가지로 인덱스가 0부터 시작된다.)

                 >>> pockets[4]

Traceback (most recent call last):

                     File "<pyshell#102>", line 1, in <module>

                         pockets[4]

IndexError: list index out of range

 

B.     리스트형 데이터 변경하기

>>> pockets

[4, 6, 1, 9]

>>> pockets[0] = 5             #첫 번째 값 변경

>>> pockets                      #리스트 확인

[5, 6, 1, 9]

 

C.     리스트 항목 추가하기 : append()함수

                       i.         append()함수는 리스트의 끝에 값을 추가한다. 


>>> pockets.append(7)        #특정 값 추가하기

>>> pockets                      #리스트 확인

[5, 6, 1, 9, 7]


 

D.    리스트 항목 제거하기 : remove()함수

                       i.         remove()함수는 리스트 내의 특정값을 삭제하는데 사용한다.

 

>>> pockets.remove(1)        #특정 값 제거하기

>>> pockets                      #리스트 확인

[5, 6, 9, 7]

 

                      ii.         특정 값을 제거하는 함수이기 때문에 remove()에서 괄호 안에는 특정 수가 들어가야 한다. 인덱스의 번호가 아니다.

 

E.     리스트 항목 삽입하기 : insert()함수


                       i.         insert()는 색인을 사용하여 특정 위치에 값을 삽입하는데 사용한다.

>>> pockets.insert(1, 3)       #두 번째 자리(1) 3값을 삽입

>>> pockets                     #리스트 확인

[5, 3, 6, 9, 7]


                      ii.         Insert()함수는 변수를 2개를 다룬다. 첫 번째 자리는 색인, 두 번째 자리는 추가할 값으로 사용한다.

 

F.     리스트 항목 추출하기 : pop()함수

                       i.         pop()함수는 색인을 활용하여 특정 위치의 값을 제거하는 용도로 사용한다. 제거함과 동시에 해당 값을 출력해 주는 것이 특징이다.

 

>>> pockets.pop(3)             #4번째 인덱스값 출력 후 제거

9

>>> pockets                      #리스트 확인

[5, 3, 6, 7]

 

6.    리스트형 데이터 자르기

A.     리스트형 변수명 우측의 대괄호 안에 숫자와 콜론 기호( : )를 이용하여 자르면 된다.

B.     면수명 [start : end]

 

>>> pockets[1:3]      #pockets[1]부터 pockets[2]까지 자르기

[3, 6]

>>> pockets[ : 3]     #처음부터 pockets[2]까지 자르기

[5, 3, 6]

>>> pockets[-2 : ]    #pockets[-2]부터 끝까지 자르기

[6, 7]

 

7.    리스트형 복사하기

A.     리스트의 주소가 복사

                       i.         이 소스 코드는 pockets의 값을 pockets_copy로 복사하는 것이 아니라 pockets라는 변수의 메모리 위치를 pockets_copy에 알려 주고 있는 소스 코드 이다.

                      ii.         따라서 pockets의 데이터 값을 바꾸게 되면 pockets_copy의 데이터 값도 변하게 되고, 그 반대의 경우도 성립된다.

 

>>> pockets                                #현재 값 확인

[5, 3, 6, 7]

>>> pockets_copy = pockets           #신규 변수 생성 및 기존 리스트 대입

>>> pockets_copy.append(1)           #신규 변수에 1 추가

>>> pockets_copy                         #신규 변수 값 확인

[5, 3, 6, 7, 1]

>>> 

>>> id(pockets)                            #기존 변수 객체 식별자 확인

1817742054728

>>> id(pockets_copy)                     #신규 변수 객체 식별자 확인

1817742054728

 

B.     리스트 값만 복사 사용

                       i.         pockets의 데이터 만을 복사하려 한다면 pockets_real_copy = pockets[ : ]와 같은 식으로 복사를 해야 한다.

                      ii.         앞서 말했지만 [ : ]의 기호는 객체의 데이터의 처음과 끝을 의미한다.

 

>>> pockets_real_copy = pockets[ : ]  #신규 변수 생성 및 pockets 복사

>>> pockets_real_copy.append(9)       #신규 변수에 9 추가

>>> pockets_real_copy                    #신규 변수 값 확인

[5, 3, 6, 7, 1, 9]

>>> pockets                                  #기존 변수 값 확인

[5, 3, 6, 7, 1]

>>> id(pockets)                              #기존 변수 객체 식별자 확인

1817742054728

>>> id(pockets_real_copy)                 #신규 변수 객체 식별자 확인

1817742113608


 

8.    리스트형 데이터 합치기 & 확장하기

A.     리스트 더하기 연산자( + )기호를 통해 두 개의 리스트를 하나로 합치는 기능을 제공한다.

                       i.         리스트 더하기 연산

                      ii.          

>>> a = [1, 2, 3]                #a리스트 생성

>>> b = [4, 5, 6]                #b리스트 생성

>>> c = a + b                   #c리스트 생성

>>> a                              #a리스트 값 확인

[1, 2, 3]

>>> b                             #b리스트 값 확인

[4, 5, 6]

>>> c                              #c리스트 값 확인

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

>>> id(a)                          #a 객체 식별자 확인

1817742114184

>>> id(b)                          #b 객체 식별자 확인

1817742054536

>>> id(c)                           #c 객체 식별자 확인

1817742054792

 

B.     리스트의 값을 확장하는데 있어서는 기본 내장 함수인 extend() 함수를 사용한다.

 

>>> a.extend(b)                               #a리스트 확장

>>> a                                            #a리스트 값 확인

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

>>> id(a)                                        #a 객체 식별자 확인

1817742114184

                       i.         확장 후에도 a라는 객체의 주소는 변하지 않는다.


 

9.    리스트 삭제를 위한 del

A.     앞에서 삭제를 하는 함수로 pop()함수를 언급한 적이 있다. del문과 pop()문의 가장 큰 차이점은 pop()문은 해당 색인의 값을 출력 해 주고 삭제를 하지만, del문은 출력을 하지 않고 삭제한다. 또한 del문의 가장 큰 이점 중 하나는 리스트의 일 부분을 제거할 수 있다.


                       i.         사용 : del 변수[인자값]

>>> a                 #리스트 값 확인

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

>>> del a[0]         #리스트 첫 번째 값 삭제

>>> a                 #리스트 값 확인

[2, 3, 4, 5, 6]

>>> del a[1:3]       #리스트의 두 번째부터 세 번쩨까지 값 제거

>>> a                 #리스트 값 확인

[2, 5, 6]

>>> del a[ : ]        #리스트 전체 값 삭제(빈 리스트 만들기)

>>> a                 #리스트 값 확인


                      ii.         해당 변수 삭제 : del 변수명

>>> del a            #변수 삭제

>>> a

Traceback (most recent call last):

              File "<pyshell#220>", line 1, in <module>

                           a

NameError: name 'a' is not defined

 

10.  리스트형의 활용

A.     문자열

>>> programming = ['Python', 'Java', 'C++']    

#문자열형으로 이루어진 리스트 선언

>>> programming                                    #리스트 값 확인

['Python', 'Java', 'C++']

 

B.     서로 다른 자료형 추가 가능

 

>>> programming.append(100)         #리스트에 숫자형 100추가

>>> programming.append(3.14)         #리스트에 실수형 3.14추가

>>> programming                          #리스트 값 확인

['Python', 'Java', 'C++', 100, 3.14]


 

C.     중첩 리스트

 

>>> nest = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

#3 x 3 2차원 행렬을 중첩 리스트로 선언

>>> nest

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> nest[0]                                 

 #리스트 첫 번째 항목 값 확인

[1, 2, 3]

>>> nest[0][0]                               

#리스트 첫 번째 항목의 첫 번째 항목 확인

1


[ 0, 0 ]

[ 0, 1 ]

[ 0, 2 ]

[ 1, 0 ]

[ 1, 1 ]

[ 1, 2 ]

[ 2, 0 ]

[ 2, 1 ]

[ 2, 2 ]


 

 


D.    문자열 리스트

 

>>> word = '파이썬 문자열 색인'      #문자열형 데이터 선언

>>> word[0]                             #첫 글자 값 확인

''

>>> word[-1]                            #마지막 값 확인

''

 

E.     문자열 리스트 추출

 

>>> word[ : 3 ]                   #문자열 처음부터 3번째 글자까지 자르기

'파이썬'

>>> word[4 : ]                    #문자열 5번째 글자부터 마지막 글자까지 출력

'문자열 색인'

>>> word[ -2 : ]                  #문자열 끝에서 2번째 글자부터 출력

'색인'


 

F.     문자열 리스트 변경

                       i.         1차 변경 시도

 

>>> word[ -2 : ]      #문자열 끝에서 2번째부터 끝까지의 값 확인

'색인'

>>> word[ -2 : ] = '추출'      #동일 위치 값 변경 시도

Traceback (most recent call last):

                     File "<pyshell#268>", line 1, in <module>

                           word[ -2 : ] = '추출'

TypeError: 'str' object does not support item assignment

형 에러 : 문자열 형 객체는 항목 값을 변경할 수 없습니다.

 

ü  결과 : 문자열형 자체는 값을 변경할 수 없다.

 

                      ii.         2차 변경 시도

 

>>> word                                       #변수 값 확인

'파이썬 문자열 색인'

>>> id(word)                                  #변수 객체 식별자 확인

2012194015056

>>> word = word[ : -2] + '추출'         #신규 객체 생성 및 기존 변수 대입

>>> word                                       #변경 값 확인

'파이썬 문자열 추출'

>>> id(word)                                   #변수 객체 식별자 확인

2012194015152

 

ü  결과 : 객체를 새로 만든다.

ü  word라는 객체 자체를 word의 끝에서 두 번째 까지 문자와 추출이라는 문자열을 합친다.

ü  word = ‘파이썬 문자열’ + ‘추출


 

11.  빈 리스트(리스트 초기화)

A.     빈 리스트를 선언하는 방법

                       i.         >>> empty_list_1 = [ ]                #아무것도 없는 리스트 생성

>>> type(empty_list_1)               #데이터형 확인

<class 'list'>

>>> len(empty_list_1)                 #리스트 길이 확인

0

                      ii.         처음부터 아무 것도 없는 리스트로 선언한다.

B.     list()함수를 이용하는 방법

                       i.         >>> empty_list_2 = list()             #빈 리스트를 함수로 생성

>>> type(empty_list_2)               #데이터형 확인

<class 'list'>

>>> len(empty_list_2)                 #리스트 길이 확인

0

변수명 = list()로 선언하면 아무것도 없는 빈 리스트가 생성된다

'Python' 카테고리의 다른 글

06. 실습 프로젝트  (0) 2017.09.27
05. 제어문과 자료형의 조합  (0) 2017.09.18
04. 제어문  (0) 2017.09.14
03. 튜플형, 세트형, 사전형  (0) 2017.09.09
01. Python시작  (0) 2017.08.31