string, list, tuple, dictionary, 집합Set, 형변환

자료형

  • Numbers / Boolean / String / List / Tuple / Dictionary / Set
  • collection
    • List, Tuple, Dictionary, Set
  • iterable
    • List, Tuple

1. Numbers

2. Boolean

3. String

  • ”,’ 둘다 사용이 가능
  • ””” 세개를 사용하는 경우는 멀티라인의 문자열
ms = """아아??
가나다
데이터 사이언스"""
print(ms)
---
아아??
가나다
데이터 사이언스

문자열 오프셋(offset) 인덱스

a = "abcdefghijk"
a[0], a[5], a[-2]
> ('a', 'f', 'j')

# [start:end]
a[1:3], a[:3], a[7:], a[-2:], a[:]
> ('bc', 'abc', 'hijk', 'jk', 'abcdefghijk')

# [start:end:strid]
a[::2], a[::3], a[2:8:2], a[::-1]
> ('acegik', 'adgj', 'ceg', 'kjihgfedcba')

# len
a[7:len(a)], a[7:]
('hijk', 'hijk')

.upper(), lower()

# 대문자, 소문자로 바꿔주는 함수
a = " FAST campus datascience "
a.upper()
' FAST CAMPUS DATASCIENCE '

find()

a.find("c")
=> c의 인덱스 출력
a.find("z")
=> z는 없기 때문에 -1 출력 됨

.count()

# 문자열에서 포함된 갯수를 리턴합니다.
a.count("a")
> 3

.lstrip(), .rstrip(), .strip()

# 공백제거
a.lstrip(), a.rstrip(), a.strip()
> ('FAST campus datascience ',
 ' FAST campus datascience',
 'FAST campus datascience')

.replace()

# replace : 문자열을 변환
a.replace("a", "b")
> ' FAST cbmpus dbtbscience '

.endswith()

# 체이닝
a, a.endswith("science"), a.rstrip().endswith("science")
> (' FAST campus datascience ', False, True)

.join() 중요!!

# join : 리스트 데이터를 --> 문자열로 바꿔줌 중요!!!!!!!!!!
ls = ["test", "data", "fast"] #리스트를
",".join(ls)
>'test,data,fast' #문자열로

4. List

  • 순서가 있는 데이터 집합
  • 표기: []

리스트 offset

# 리스트 - offset
ls = ["fast", "campus", "data", "python"]
ls[1], ls[-1], ls[:3], ls[:-2], ls[::-1], d[2][1]  
------------------------------------------------------
('campus',
 'python',
['fast', 'campus', 'data'],
['fast', 'campus'],
['python', 'data', 'campus', 'fast'],  
4)

.append()

# 데이터 추가
ls.append("test")  
------------------------------------------------------
['fast', 'campus', 'data', 'python', 'test']

리스트 데이터 수정

# 리스트의 데이터 수정
ls[1] = "FAST"
---
> ['data', 'FAST', 'insert', 'insert', 'insert', 'test', 'campus']

.split() 중요!!

# 리스트로 변경 중요!!!!!!!!!!!!
s = "Beautiful is better than ugly."
result = s.split(" ")
---
> ['Beautiful', 'is', 'better', 'than', 'ugly.']

.sort()

# 정렬
ls.sort()  
---
> ['campus', 'data', 'fast', 'python', 'test']

#단어 길이로 정렬
ls.sort(key=len)  
---
> ['data', 'fast', 'test', 'campus', 'python']
ls.index("fast")  
---
> 1

ls.insert(2, "insert")  
---
>
['data',
 'fast',
 'insert',
 'insert',
 'insert',
 'insert',
 'test',
 'campus',
 'python']

.remove()

# 데이터를 삭제하는데 index 값이 가장 작은 데이터 한개만 삭제
ls.remove("insert")  
> ['data', 'fast', 'insert', 'insert', 'insert', 'test', 'campus', 'python']

5. Tuple

  • 리스트와 같이 순서가 있는 데이터 타입
  • 데이터의 수정이 불가능
  • 표기: ()
# 튜플 선언
tp1 = 1, 2, 3
tp2 = "a", "b"
tp3 = (1, "b")
tp1, tp2, tp3, type(tp1)  
---
> ((1, 2, 3), ('a', 'b'), (1, 'b'), tuple)
tp1[2], tp1[::-1]
---  
> (3, (3, 2, 1))

6. Dictionary

  • 데이터의 순서가 없고 key, value의 쌍으로
  • 선언 {key1:value1, key2:value2}
  • key 값은 문자열이나 정수만 가능
dic = {
    1: "one",
    "A": ["data", "python"],
    "숫자": 1234,
    2: "two",
}
dic
dic["숫자"]
dic[2]
---
> {1: 'one', 'A': ['data', 'python'], '숫자': 1234, 2: 'two'}
> 1234
> "two"

.keys()

dic.keys()
---
> dict_keys([1, 'A', '숫자', 2])

.values()

dic.values()
---
> dict_values(['one', ['data', 'python'], 1234, '둘'])

.items()

dic.items()
---
> dict_items([(1, 'one'), ('A', ['data', 'python']), ('숫자', 1234), (2, '둘')])

.get()

#dic.get("A") => ['data', 'python']
dic.get(1)
---
> 'one'
print(dic.get(3, "no data"))
---
> no data
Quiz
#데이터를 리스트, 튜플, 딕셔너리로 나타내세요.
subjects = ["국어", "영어", "수학"]
points = [80, 90, 70]

#리스트 형태
ls = [("국어", 80), ("영어", 90), ("수학", 70)]
list(zip(subjects, points))
---
> [('국어', 80), ('영어', 90), ('수학', 70)]

#튜플 형태
tp = (('국어', 80), ('영어', 90), ('수학', 70))

#딕셔너리 형태
dic = {
    "국어": 80,
    "영어": 90,
    "수학": 70,
}

7. 집합 Set (중복제거 기능, 집합연산)

  • 중복되는 데이터가 없는 데이터 타입
  • 교집합, 합집합, 차집합과 같이 집합 연산 가능
  • 리스트에서 중복되는 데이터를 제거할때, 공동 데이터를 뽑아낼때 사용
  • 수정이 안되기때문에 리스트로 형변환 한후에 수정해줘야 한다
  • 형변환할때 순서가 항상 보장되는 것은 아니다.
ls = [1, 2, 3, 4, 1, 2, 3]
s = set(ls)  
> {1, 2, 3, 4}

집합 연산

s1 = set([1, 2, 3, 4])
s2 = set([3, 4, 5, 6])

# 교집합
s1 & s2, s1.intersection(s2)
---
> ({3, 4}, {3, 4})

# 합집합
s1 | s2, s1.union(s2)
---
> ({1, 2, 3, 4, 5, 6}, {1, 2, 3, 4, 5, 6})

# 차집합
s1 - s2, s1.difference(s2)  
---
> ({1, 2}, {1, 2})

리스트에서 공동 데이터 찾기

data1 = ["python", "test", "data"]
data2 = ["data", "fast", "test"]
set(data1) & set(data2)  
---
> {'data', 'test'}

8. change datatype

  • 데이터 타입을 변경할때는 그 타입에 따라서 변경이 가능하게도하고 불가능 하기도 한다.

문자열 -> 숫자

string = "1234"
number = int(string)
type(number), number, number + 123  
---
> (int, 1234, 1357)
#형변환 될 값이 실제로 int형 이여야함!!!
string = "a"
int(string)  
---
> 오류

숫자 -> 문자열

number = 1234
string = str(number)
type(string), string, "입력하신 숫자는 " + str(number) + " 입니다."  
---
> (str, '1234', '입력하신 숫자는 1234 입니다.')

boolean 형변환

bool(""), bool("data"), bool(-1), bool(0), bool(23)  
---
> (False, True, True, False, True)

문자열 -> 리스트

string = "ABCD"
ls = list(string)  
---
> ['A', 'B', 'C', 'D']

튜플->딕셔너리

tp = ((1, "one"), (2, "two"))
dict(tp)  
---
> {1: 'one', 2: 'two'}
tp = ((1, "one", 3), (2, "two", 4))
dict(tp)  
------------------------------------------------------
오류...

Quiz

#리스트 데이터의 중복을 제거하고 내림차순으로 정렬하세요
ls = [1, 3, 2, 1, 3, 5, 7, 8, 7]
# 결과 : [8, 7, 5, 3, 2, 1]  
------------------------------------------------------
# 중복제거
ls = list(set(ls))
# 오름차순으로 정렬
ls.sort()
# 역순으로 정렬
# ls.reverse()
ls = ls[::-1]

태그:

카테고리:

업데이트: