데이터의 유형
1. 숫자형 - int 정수, float 실수
2. bool - True/False 값, 비교/ 논리 연산의 결과
3. 시퀀스 - 값이 연속적으로 이어진 형태(순서 있음)
1) 문자열 - 문자의 나열, ' , ", ''', """ 4가지 사용 가능
'''. """ - 여러 줄의 문자열을 작성할 때 사용 예) ''' 첫번째 줄
두번째 줄 '''
', " - 한 줄 문자열을 작성할 때 주로 사용
전체 문자열(A) 내에 ' 또는 "를 출력할 경우
A를 ' 로 묶고 내부에서 " 를 사용, A를 " 로 묶고 내부에서 ' 를 사용
2) 리스트 - 배열과 유사함. 원소의 변경, 추가, 삭제 가능
[ ] 사용, 각 값은 ' , ' 로 구분하여 작성, 데이터 유형에 상관없이 저장 가능
문법) 식별자 = [값1, 값2, 값3, 값4, ....]
빈 리스트 : 식별자 = [] / 식별자 = list()
3) 튜플 - 수정할 수 없는 배열, 원소의 변경, 추가, 삭제가 불가능, 최초 생성 시 작성된 내용을 유지
( ) 사용. 각 값은 ' , '로 구분하여 작성, 데이터 유형에 상관없이 저장 가능
문법) 식별자 = (값1, 값2, 값3, .....)
요소가 1개인 튜플 생성 : 식별자 = (값,)
range사용하여 생성 : 식별자 = tuple(range())
튜플 -> 리스트 : list(tuple 식별자)
리스트 -> 튜플 : tuple(list 식별자)
4. 딕셔너리 - Map과 유사(거의 동일), key와 value 의 쌍으로 저장
생성 문법) 식별자 = {key1:value1, key2:value2, ....}
인적정보, 제품정보 등 저장, 관리하기 위한 유형
5. 집합 - 순서 없음, 중복이 허용되지 않음
range(수치) 함수 : 범위 값 생성 함수. 0부터 수치 -1까지 값을 생성, 순차적
예) a = list(range(5)) => [0, 1 ,2, 3, 4]
사용법)
range(start, end) : start ~ (end - 1) 생성
range(strar, end, step) : start ~ (end - 1) 까지 step 간격으로 생성
예) range(1, 10, 2) => 1, 3, 5, 7, 9 생성
range(big, small, -step) : 큰수부터 역순으로 생성
예) range(10, 0, -1) => 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 생성
리스트나 튜플에서 사용할 값을 생성할 때 주로 사용
자료구조(Data Structure) 에서 데이터를 추가 - push
데이터를 꺼내는 것 - pop
슬라이스 : 일부 요소의 추출 및 변경, 추출 시에는 원본 유지됨
리스트[start:end] - start부터 end-1까치 추출
리스트[start:end:step] - start부터 end-1까지 step만큼 건너띄며 요소 추출
리스트[:end] - 처음부터 end-1까지 추출
리스트[start:] - start부터 끝까치 추출
리스트[:] - 전체 추출(= 리스트[::])
리스트[:end:step], 리스트[start::step], 리스트[::step]
리스트 슬라이스 후 값을 대입하면 추출된 원소 대신 새로운 데이터를 삽입할 수 있음. 띄엄띄엄 교체도 가능
시퀀스 형 공통 명령어
in / not in : 원소의 존재 여부 확인. 결과값은 bool 형 True / False
문자열 예시
s1 = 'hello world'
s2 = "hello world"
s3 = '''hello world'''
s4 = """hello world"""
s5 = 'hello "python" world'
s6 = "hello 'python' world"
s7 = '''첫번째 줄
두 번째 줄 문장 길게 입력
하기
'''
print(s7)
# 문자열 연산
# '+' : 문자열 결합
str1 = "hello"
str2 = " world"
print(str1 + str2)
# '*' : 문자열 반복
print(str1 * 3)
print("=" * 20)
print(str1[1])
print(str2[-1]) # 시퀀스의 뒤에서부터 순번 처리, 제일 마지막 문자열 -1
리스트 예시
l1 = [0,1,2,'3',4]
print(l1)
print(l1[2])
# 원소 변경
l1[3] = 3
print(l1)
l2 = list(range(10, 0, -1))
print(l2)
print('=' * 30)
# 리스트 추가 삭제
# append - 리스트의 마지막에 원소 추가
l3 = []
l3.append(1)
l3.append(2)
print(l3)
# insert - 리스트의 지정 위치에 원소 추가
l3.insert(1, 5)
print(l3)
# pop - 리스트의 마지막 원소 꺼내기 (삭제)
x = l3.pop()
print(x, l3, sep='\n')
l3.append(3)
l3.append(4)
l3.append(5)
print(len(l3)) # len() 리스트의 크기(원소의 개수)
print(l3)
#y = l3.pop(2) # 순번 지정하여 원하는 위치의 값 꺼내오기
#print(y, l3, sep="\n")
#print(l3.pop()) # 출력과 동시에 리스트에서 삭제
#print(l3)
# remove - 리스트의 지정 값 원소 삭제(첫번째 값만 삭제)
l3.remove(5)
print(l3)
print('=' * 30)
# 기타 함수
# sort - 원소 정렬
l4 = [4, 5, 1, 3, 7, 2]
l4.sort()
print(l4)
l5 = ['a', 'z', 'm', 'c']
l5.sort()
print(l5)
l6 = ['가','다','마','라']
l6.sort()
print(l6)
# reverse - 원소 배치 반전
l4.reverse()
print(l4)
# index - 원소의 위치값 구하기
i = l4.index(3)
print(i)
# 슬라이스(부분 추출 또는 변경)
print(l4[0:3], l4)
s1 = l4[1:4]
print(s1)
# 리스트[start:end] : start부터 end-1 까지 추출
# 리스트[start:end:step] : start부터 end-1까지 step 간격으로 추출
l4.append(0)
print(l4, len(l4))
s1 = l4[0:-1:2]
print(s1)
s1 = l4[0:len(l4):2]
print(s1)
s1 = l4[:len(l4):2]
print(s1)
s1 = l4[0::2]
print(s1)
s1 = l4[::2]
print(s1)
s1 = l4[:] # 리스트 복사(전체 추출)
print(s1)
print('=' * 30)
l7 = list(range(0, 100, 10))
print(l7)
l7[2:5] = [333, 444, 555]
print(l7)
# 복원
l7 = list(range(0, 100, 10))
#l7[2:5] =[333]
l7[2:5] = [333, 444, 555, 777, 666, 888]
print(l7)
# 복원
l7 = list(range(0, 100, 10))
l7[2:10:2] =[333, 444, 555, 666]
#l7[2:8:2] =[333, 444, 555]
print(l7)
튜플 예시
t1 = (1, 2, 3, 4)
print(t1)
print(t1[2])
#print[1] = 10 - 오류
#t1.pop() - 오류
#t1.insert(2, 7) - 오류
t2 = ('a',)
print(t2)
t3 = tuple(range(10))
print(t3)
l1 = list(range(1,10,2))
t4 = tuple(l1) # 데이터의 고정화
print(t4)
print(len(t4))
a = t4.index(5) # 5의 순번(인덱스)
print(a)
# 원소의 존재 유무 확인 in / not in 결과값 bool 형 True/False
b = 8 in t4
print(b)
c = 8 not in t4
print(c)
str = 'hello python world'
d = 'a' in str
e = 'a' not in str
print(d, e)
딕셔너리 예시
d1 = {1:'one', 2:'two'}
print(d1)
print(d1[1])
print(d1[2])
# 딕션너리에 추가
d1[3] = 'three'
print(d1)
d1['four'] = 4
print(d1)
person1 = {"name" : "홍길동"}
person1["age"] = 20
person1["addr"] = "인천시 미추홀구"
print(person1)
print(person1["addr"])
# key 목록만 추출
k1 = list(person1.keys())
print(k1)
# value 목록만 추출
v1 = list(person1.values())
print(v1)
item = list(person1.items())
print(item)
# 값을 꺼내오는 함수 : get()
print(person1.get("phone")) # 없는 경우 None 출력
#print(person1["phone"]) - 오류
# in을 사용하여 key 존재 유무 확인
b = "phone" in person1
print(b)
ValueError: attempt to assign sequence of size 4 to extended slice of size 3
TypeError: 'builtin_function_or_method' object does not support item assignment
AttributeError: 'tuple' object has no attribute 'pop'
AttributeError: 'tuple' object has no attribute 'insert'
KeyError: 'phone'
'공부기록 > Python' 카테고리의 다른 글
6월 12일 (2) python - 모듈 (0) | 2023.06.12 |
---|---|
6월 12일 (1) python - 함수 (1) | 2023.06.12 |
6월 9일 (2) python - 제어문2 (0) | 2023.06.09 |
6월 9일 (1) python - 데이터 유형2, 연산자, 제어문 (0) | 2023.06.09 |
6월 8일 (1) python - 설치, 문법 (0) | 2023.06.08 |