데이터분석

[23.06.07] Python 데이터 타입, 인덱싱, 슬라이싱 (복습) - 04(1)

gmwoo 2023. 6. 7. 11:17

 

1. 데이터 타입 복습 (3일차)

 - 파이썬이 제공하는 데이터 타입은 아주 많음

 - 변수를 미리 선언할 필요가 없음

 - 다른 프로그래밍 언어와 달리, 변수에 모든 타입이 저장 가능

   > 인터프리터: 한 줄 읽고 한 줄 번역해서 실행하는 언어들은 원래 변수에 특정 데이터 타입만 저장하지 않고 모든 타입을 다 넣을 수 있음

 예제 1) list, tuple, dict, set (컬렉션 데이터 타입)

a1 = 4
print(a1, type(a1))

a1 = 4.5
print(a1, type(a1))

a1 = "4"
print(a1, type(a1))

a1 = list()
a1.append("1")
a1.append("2")
print(a1,type(a1[0]), type(a1))

a1 = [1,2,3]
print(a1, type(a1[0]), type(a1))

a1 = dict()
a1["school"] = "학교"
a1["rain"] = "비"
print(a1, type(a1))

a1 = {"school": "학교", "rain":"비"}
print(a1, type(a1))

 

 2) 주소

 - 컴퓨터의 메모리 공간을 관리하기 쉽게 0, 1,2 숫자를 붙여나가고 이를 번지 또는 주소라고 함

 - 주소 부여 방식: 직접주소방식, 간접주소방식

   > 직접주소방식: 주소를 찾아가 데이터가 존재하면 값

   > 간접주소방식: 주소를 찾아가 데이터의 주소가 들어가 있음

 - 파이썬: 모두 참조. 값타입 존재X. 전부 참조이므로 실제 데이터 크기는 상관없이 변수에는 값 자체가 아닌 번지만 저장

 

2. 인덱싱과 슬라이싱

 - 변수가 배열 형태로 저장될 때

 - dict 타입은 지원 x

 - list, tuple, str(문자열)

s1 = "아메리카노, 에스프레소, 카페라떼, 캬라멜마끼아또"
print(s1[0])
print(s1[1])
print(s1[2])
print(s1[6],s1[7],s1[8],s1[9],s1[10])

 - 토큰 분리: split 함수는 반환 값이 list 타입, 문자열에서 특정 문자 기준으로 잘라 냄

# str, tuple 둘 다 randomly 라 인덱싱을 통한 값 변경 불가
# s1[0]="어" # TypeError: 'str' object does not support item assignment

# 슬라이싱 [시작:종료:증감치] - 시작과 종료에는 값을 생각할 경우
# 처음부터 마지막까지 라는 의미가 있음

print(s1[::2]) # 0,2,4,6,8
print(s1[:5]) # 0~4까지 잘라내기
print(s1[6:11])
print(s1[::-1]) # 뒤로부터 역순으로 출력

s2 = s1[6:11]
print(s2)

# 토큰분리: spllt 함수는 반환 값이 list 타입, 문자열에서 특정 문자 기준으로 잘라 냄.
wordList = s1.split(",")
print(wordList)

# "연결할 문자열".join(리스트타입)
s2 = " ".join(wordList)
print(s2)

s2 = ",".join(wordList)
print(s2)

# 문자열은 한 번 값이 정해지면 자체는 수정 불가
s1 = "hello, python"
s1 = "H"+s1[1:] # H, ello,python 문자하고 합친 문자가 다시 s1에 전달
print(s1)

s1 = s1[:7] + "P" + s1[8:]
print(s1)

 

문제 1) 각 첫 글자만 대문자로 바꾸어서 출력

# 문제 : 각 첫 글자만 대문자로 바꾸어서 출력
colorList = ["red", "white", "green", "cyan", "magenta", "violet", "blue"]
print(colorList[0])
print(colorList[2])
print(colorList[4])
print(colorList[5])

print(colorList[:4])
print(colorList[4::-1])  # 4번부터 역순으로 

### 내 풀이
for x in colorList:
    print(x[0].upper()+x[1:], end=', ')
print()
    
### 선생님 코드
for color in colorList:
    temp = color[0].capitalize() + color[1:]
    colorList.append(temp)
print(colorList)

 

 - insert(), remove(), del  - 데이터 추가, 수정, 삭제

 데이터 추가 수정 삭제
colorList2.append("Black") # 무조건 맨뒤에
colorList2.insert(0, "yellow") # 위치지정이 가능하다
print( colorList2 )

# 수정
colorList2[0] = "Yellow"
print(colorList2)

# 삭제 - 값으로
colorList2.remove("Red")
# 삭제 - 위치 값으로
del colorList2[5]
print(colorList2)

 

3. dict 타입

 - 키(key) 와 값(value) 쌍으로 정보를 저장

 - keys() 함수는 키만 반환

 - values() 함수는 값만 반환

mydict = {"red":"빨간색","green":"초록색"}
mydict["blue"] = "파란색"  # 추가 또는 수정, 키 값이 없으면 추가 / 추가 키 값이 있으면 수정으로 판단

# keys() 함수는 키만 반환

if "red" in mydict.keys():
    print('red가 있다')
else:
    print('red가 없다')

print(mydict.keys(), type(mydict.keys()))
print(mydict.values(), type(mydict.values()))

print(mydict['red'])
print(mydict['green'])
print(mydict['blue'])   
# print(mydict['yellow'])  # 키값이 없으면 예외 발생

# 삭제 후
del mydict['red']
print(mydict.keys())
반응형