1. 문자열
1) 문자열 연산
대부분의 프로그래밍 언어처럼 문자열 연산이 가능합니다.
문자열에서 + 연산자는 문자열을 연결시키도록 연산자 오버로딩이 되어 있습니다.
str1 = "python"
str2 = "java"
print(str1 + " and " + str2) # python and java
또한 문자열과 정수는 * 연산이 가능한데, 문자열에서는 반복이 되도록 연산자 오버로딩이 되어있습니다.
str1 = 'python'
print(str1 * 3) # pythonpythonpython
그런데 문자열과 정수는 + 연산을 할 수 없습니다.
str1 = "python"
print(str1 + 10) # TypeError: must be str, not int
이는 문자열과 정수에 대한 연산자 오버로딩이 되어있지 않기 때문입니다.
2) immutable ( 변경 불가능 )
문자열은 immutable입니다.
str1 = 'python'
str1[0] = 'z' # TypeError: 'str' object does not support item assignment
3) 서식
" name:victolee, age:26 "양식으로 출력하는 여러가지 방법에 대해 알아보겠습니다.
str()
문자열과 정수를 같이 출력하고 싶으면, str() 함수를 사용해서 정수를 문자열로 만들어야 합니다.
name = "victolee"
age = 26
print("name:" + name + ", age:" + str(age))
format()
format() 함수를 사용해서 데이터와 데이터 포맷을 정의할 수 있습니다.
또한 문자열에 format() 메서드를 호출하여 값을 동적으로 할당할 수 있습니다.
format() 메서드의 인자가 들어갈 자리를 {정수}로 명시하면 됩니다.
name = "victolee"
age = 26
print("name:" + format(name, "s") + ", age:" + format(age, "d"))
print("name:{0}, age:{1}".format(name, age))
% 연산자
나머지 연산자인 %가 문자열에서는 format이 되도록 오버로딩 되어있습니다.
tuple( 튜플 )을 사용하는 방법은, % 전에 데이터가 들어갈 자리에 데이터 타입을 작성하고, % 뒤에 실제 데이터를 tuple로 넘겨줍니다.
dictionary( 딕셔너리 )를 사용하는 방법은, % 전에 dictionary의 key와 데이터 타입을 작성하고, % 뒤에 실제 데이터를 dictionary로 넘겨줍니다.
튜플과 딕셔너리 자료형에 대해서는 다음 글에서 다루도록 하겠습니다.
# tuple을 이용한 format
print("name:%s, age:%d" % (name, age))
# dictionary을 이용한 format
print("name:%(name)s, age:%(age)d" % {'name': name, 'age': age})
2. 리스트 ( List )
리스트는 대괄호[ ]로 표기하며, 리스트에 있는 객체들은 순서를 가집니다.
1) 인덱싱 ( indexing )
li = [1, 2, 3, 4, 5]
print(li[1], li[-1]) # 2 5
2) 슬라이싱 ( slicing )
기본 사용법
print(li[0:]) # [1, 2, 3, 4, 5]
print(li[0::2]) # [1, 3, 5]
print(li[len(li)::-1]) # [5, 4, 3, 2, 1] ( 슬라이싱의 step을 이용해서 li를 reverse 했다. )
슬라이스를 이용하여 치환
li[0:2] = [10, 20]
print(li) # [10, 20, 3, 4, 5]
li[1:4] = [20]
print(li) # [10, 20, 5]
슬라이스를 이용하여 삭제
li[1:2] = []
print(li) # [10, 5]
슬라이스를 이용하여 삽입
li[1:1] = [2]
print(li) # [10, 2, 5]
li[2:2] = [3, 4] # 여러개 삽입
print(li) # [10, 2, 3, 4, 5]
li[:0] = ['first']
print(li) # ['first', 10, 2, 3, 4, 5]
li[len(li):] = ['last']
print(li) # ['first', 10, 2, 3, 4, 5, 'last']
3) mutable ( 변경 가능 )
리스트는 mutable 합니다.
li = [1, 2, 3, 4, 5]
del li[1:3]
print(li) # [1, 4, 5]
li[0] = li[0] + 10
print(li) # [11, 4, 5]
4) 메서드
List의 여러가지 메서드를 알아보겠습니다.
# 맨 앞에 삽입
li = [1, 2, 3, 4, 5]
li.insert(0, 0)
print(li) # [0, 1, 2, 3, 4, 5]
# 맨 마지막에 삽입
li.append('last')
print(li) # [0, 1, 2, 3, 4, 5, 'last']
# reverse
li.reverse()
print(li) # ['last', 5, 4, 3, 2, 1, 0]
# 제거
li.remove('last')
print(li) # [5, 4, 3, 2, 1, 0]
5) 리스트를 스택, 큐로 사용하기
스택( stack )
stack = []
stack.append(10)
stack.append(20)
stack.append(30)
print(stack) # [10, 20, 30]
stack.pop()
print(stack) # [10, 20]
큐 ( queue )
stack = []
stack.append(10)
stack.append(20)
stack.append(30)
print(stack) # [10, 20, 30]
stack.pop()
print(stack) # [10, 20]
6) 정렬
li = [1, 12, 5, 18, 9, 6, 2]
li.sort()
print(li) # [1, 2, 5, 6, 9, 12, 18]
# 역순으로 정렬
li.sort(reverse=True)
print(li) # [18, 12, 9, 6, 5, 2, 1]
# 문자열을 key로 하여 정렬
li.sort(key=str)
print(li) # [1, 12, 18, 2, 5, 6, 9]
li.sort(key=int)
print(li) # [1, 2, 5, 6, 9, 12, 18]
3. 셋 ( Set )
Set은 집합과 관련된 자료형으로 중괄호{ }로 표기하며, 순서가 없고, 중복을 허용하지 않습니다.
1)
List의 중복되는 요소를 제거할 때 유용합니다.
li = [ 1, 2, 3, 2, 2, 4, 5, 5, 6]
s = set(li)
print(s) # set([1, 2, 3, 4, 5, 6])
2) 메서드
s = {1, 2, 3, 4, 5, 6}
s.add(9)
print(s) # set([1, 2, 3, 4, 5, 6, 9])
s.discard(9) # 원소 9를 삭제
print(s) # set([1, 2, 3, 4, 5, 6])
s.clear() # set을 비운다.
print(s) # set([])
# remove()는 discard()와 같은 기능이지만, set에 존재하지 않은 원소를 삭제하려 하면 에러 발생
s.remove(1) # KeyError:1
3) mutable ( 변경 가능 )
Set은 mutable 합니다.
s = {1, 2, 3}
print(s)
s.update({4, 5})
print(s) # set([1, 2, 3, 4, 5])
이상으로 자료형 문자열과 List, Set에 대해 알아보았습니다.
'웹 프로그래밍 > ------ Python' 카테고리의 다른 글
[Python 기본] 파일 입출력 (1) | 2018.06.06 |
---|---|
[Python 기본] 모듈 ( Module ) (0) | 2018.06.06 |
[Python 기본] 심볼 테이블( Symbol Table )과 객체 (2) | 2018.06.06 |
[Python 기본] 클래스 - 멤버, 생성자/소멸자, 연산자 오버로딩 (0) | 2018.06.06 |
[Python 기본] 기본 함수와 lambda 함수 (0) | 2018.06.06 |
[Python 기본] 조건문 & 반복문 및 내포 ( Comprehension ) (0) | 2018.06.06 |
[Python 기본] 자료형 - Tuple, Dictionary, 순차 자료형 함수 (0) | 2018.06.06 |