Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- js local storage
- js 삭제 기능
- js
- js todolist
- js filter 삭제
- js todo
- js 노마드코더
- js 문자열을 배열로
- 깃허브 리드미 뱃지
- 노마드코더 크롬앱 만들기
- 노마드코더
- js date.now
- js localstorage
- js string을 array로
- js 시계만들기
- c++
- js array id 부여
- js localstorage 저장
- 판다코딩
- javescript
- 깃허브 리드미 기술스택
- js 문자열 변환
- js 시간 표시
- js 삭제 버튼
- js forEach
- javascript
- js preventDefault
- 깃허브 뱃지 링크
- 피그마 왕초보
- 깃허브 꾸미기 예시
Archives
- Today
- Total
I'm gonna be the BEST.
Day_2 인덱싱(indexing) & 슬라이싱(slicing) / 리스트(list) & 튜플(tuple) 본문
프로그래밍 언어/Python
Day_2 인덱싱(indexing) & 슬라이싱(slicing) / 리스트(list) & 튜플(tuple)
새싹 개발자 뚜비 2022. 1. 27. 09:00728x90
객체지향 프로그램(OOP)
Real World에서 실세계의 존재하는 객체를 분석하여
명사적 특징과 동사적 특징으로 나눈 후 프로그램 영역으로 옮긴다.
나 (뚜비)
명사적 특징 : 성별, 이름, 나이 등 → 변수로 표현
동사적 특정 : 행동들 → 함수로 표현
실세계에 존재하는 객체 : 오브젝트
프로그램 영역에서 생성된 객체 : 인스턴스
CLASS는 인스턴스를 생선하는 것
파이썬은 모든 변수의 타입은 객체(instance)로 취급
.은 특정한 인스턴스의 소유 표시
, 공유할 수 있는 함수 표시
# 문자열이 제공하는 함수
# 파이썬의 모든 변수의 타입은 객체(instance)로 취급된다.
str01 = ''
str02 = str() #인스턴스 생성 구문
print('type : ', type(str01))
print()
phoneNumber = "010-0000-0000"
str03 = phoneNumber.split("-")
print('type : ', type(str03))
print('data : ', str03)
print()
seqTxt = "Talk is cheap. Show me the code!!"
print("type : ", type(seqTxt), len(seqTxt))
print('dir : ', dir(seqTxt)) #객체가 가지고 있는 내장함수들을 보기위한 함수
print()
# 시퀀스 데이터는 인덱싱 및 슬라이싱이 가능하다.
# __iter__(얘가 있는 데이터 타입만 인덱싱과 슬레이싱 가능/ dir로 확인할 수 있다.)
# -인덱싱, -슬라이싱도 가능함
# [start : end-1 : step]
print("indexing : ", seqTxt[0])
print("slicing : ", seqTxt[0 : 4])
print("slicing : ", seqTxt[-6 : -2]) # 출력값 : code
print()
exStr = "홀짝홀짝홀짝홀짝홀짝"
#만약 홀만 출력하고 싶다면?
print('exStr 홀:', exStr[::2])
print('exStr 홀:', exStr[0 : len(exStr) : 2])
print('exStr 짝:', exStr[1 : : 2])
print('exStr 짝홀:', exStr[::-1])
print()
#문자열이 가지고 있는 함수 소개
capital = 'nice Python'
print('Capitalzice : ', capital.capitalize()) #첫번째 문자만 대문자로 만드는 함수
phoneNumber = "010-0000-0000"
print('raplace : ', phoneNumber.replace('-', ' '))
url = 'http://www.naver.com'
print('url slicing : ', url[-3:]) #com
print('url slicing : ', url[-3:], url[url.find('com') : ]) #스타트 인덱스에 find 활용
print('url slicing : ', url[len(url) -3 : ])
urlList = url.split('.') #변수에서 실행된 결과를 변수에 다시 담는 것
print('urlList type : ', type(urlList), urlList)
print()
companyName = ' samsong ' #문자열은 공백을 포함함
print('len : ', len(companyName))
# strip 공백을 없애는 함수
print('data : ', companyName, len(companyName.strip()))
print(companyName.lstrip()) # 왼쪽 공백 제거
print(companyName.rstrip()) # 오른쪽 공백 제거
print()
# 대문자화 : upper(), 소문자화 : lower()
print('upper : ', companyName.upper())
print()
# 확장자가 xls, xlsx 파일인지 여부를 확인하고 싶다면?
fileName = 'report.xls'
# 파일 이름이 report 인지를 판단하고 싶다면?
print('report 파일인지 여부', fileName.startswith(("report")))
print('xls, xlsx 파일인지 여부', fileName.endswith(("xls", "xlsx")))
# startswith : 문자열이 무엇으로 시작하는지 확인해주는 함수
# endswith : 문자열 마지막이 무엇으로 끝나는지 확인해주는 함수
print()
# 문자열 in 연산자를 이용해 문자열을 판별할 수 있다.
fruitTxt = 'apple banana pineapple mango grape melon'
print('in operator : ', 'Apple' in fruitTxt)
print('in operator : ', 'Apple'.lower() in fruitTxt)
print()
drinking = 'cocacola'
print(len(drinking), drinking.count('c'), drinking.find('l'), drinking.index('a'))
# index는 다중으로 반환하지 못하고 첫번째로 만나는 값만 반환함
'''
List(중요) ≠ array
- 순서 O, 중복 O, 수정, 삭제 가능
- index 0 ~
- 선언 하는 법 : [], list()
- 현업에서는 [{key : value} {}]식의 List의 형태를 많이 활용
List : 여러개의 스칼라 타입(단일 데이터인 것)을 담을 수 있는 변수의 타입
'''
lst = [1, 2, 3, 4]
print('type : ', type(lst), lst)
print('dir : ', dir(lst)) # __iter__ 확인함 / List도 인덱싱, 슬라이싱 가능
print('indexing : ', lst[0])
print('slicing : ', lst[0 : 2])
lst2 = [1, 2, 3, 4, 'ddubi', ['show', 'me', 'the', 'code']] #복합적인 형태로 사용 가능
# me 꺼내기
print('me : ', lst2[-1][1], type(lst2[-1])) # 인덱싱
print('me : ', lst2[-1][1:3], type(lst2[-1])) # 슬라이싱
# 연산 가능
x = [1, 2, 3]
y = [4, 5]
z = x + y
print('type : ', type(z), z)
z[0] = 0
print('type : ', type(z), z)
print()
# list가 가지고 있는 함수
z.append(7) # 리스트에 맨 마지막 인덱스에 값을 추가한다.
print('append : ', z)
z.insert(0, 6) # 내가 원하는 인덱스에 값을 추가한다.
print('insert : ', z)
z.sort() # 오름차순 정렬
print('sort : ', z)
z.reverse() # 내림차순 정렬
print('reverse : ', z)
z.pop(0) # 원하는 인덱스의 값을 꺼내지만 리스트 내에서 삭제한다.
print('pop : ', z)
del z[0] # 리스트의 원하는 인덱스의 값을 삭제함
print('del : ', z)
z.remove(2) # 값(value)을 삭제한다. 중복된 값을 전부 제거하진 않음(첫번째 값만 삭제)
print('remove : ', z)
print()
# append() & extend()
lst01 = [1, 2, 3]
lst02 = [4, 5]
lst01.extend(lst02)
print('append : ', lst01) # [1, 2, 3, [4, 5]]
print('extend : ', lst01) # [1, 2, 3, 4, 5]
print()
# inner List
# [ [], [] ] 리스트의 요소로 리스트가 들어감
inner_lst = ['a', 'b', 'c']
outer_lst = [ 10, 3.14, True, 'str', inner_lst ]
print('type : ', type(outer_lst))
print('inner list : ', outer_lst[-1])
print()
# range() : 숫자를 순차적으로 생성해주는 객체 (시퀀스형)
tmpRange = range(1, 11, 2)
print('range : ', tmpRange)
print('type : ', type(tmpRange), tmpRange)
print('indexing : ', tmpRange[-1])
# in
print('in : ', 11 in tmpRange )
print()
# 제어구문, 반복구문
# 파이썬은 들여쓰기를 문법으로 취급
# for ~ in : (반복)
# if ~ in : (조건 제어)
for i in tmpRange :
print(i, end='\t')
print()
print()
import random as r # random 이라는 모듈을 가져옵니다 / as : 나의 모듈에서 지정한 별칭으로 사용하겠다
tmpLst = []
for i in range(5):
tmpLst.append(r.randint(1, 5)) #randint 난수를 발생시킨다.
print('data : ', tmpLst)
if 4 in tmpLst :
print('in OK')
else :
print('not in')
'''
list comprehension
- list 안에 for 구문을 포함
- 변수 = [ 실행문 for 변수 in sequence형 객체]
'''
# x의 값을 제곱하여 새 list에 넣기
x = [2, 4, 1, 5, 3]
#for value in x :
# print(value)
#for idx in range(len(x)) :
# print(x[idx])
result = []
for value in x :
sqrt = value ** 2
result.append(sqrt)
print('x : ', x)
print('result : ', result)
result = [value ** 2 for value in x]
print('comprehension : ', result)
중요한건 오늘 배운것은 모두 시퀀스형이라는 것
'''
튜플(touple)
- 선언 : (), tuple()
- 순서 O, 중복 O, 수정 X, 삭제 X : 불변(immutable)
- 읽기 전용으로 많이 사용, 하지만 튜플 자체를 많이 사용하지 않음
- 시퀀스형이기 때문에 indexing, slicing 가능
'''
#tpl = (3, )
tpl = 1, 2, 3, 4, 5, 6
print('type : ', type(tpl), tpl)
print('indexing & slicing : ', tpl[0], type(tpl[0]), tpl[0:2], type(tpl[0:2]))
# tpl[0] = 10 - error
# 캐스팅(형변환)을 통한 데이터 조작은 가능하다.
lst = list(tpl)
print('lst type : ', type(lst), lst)
lst[0] = 10
tpl = tuple(lst)
print('tpl type : ', type(tpl), tpl)
# 1 ~ 99까지의 정수 중 짝수만 튜플에 저장한다면?
even_data = tuple(range(2, 100, 2))
print('type : ', type(even_data), even_data)
# packing & unpacking
packing = ('보라돌이', '뚜비', '나나', '뽀', '햇님') # packing
x1, x2, x3, *x4 = packing # 할당하는 것을 unpacking
print('type : ', type(x1), type(x2), type(x3), type(x4))
print('data : ', x1, x2, x3, x4)
[ 실습 ]
# --- 실습 ---
movie_lst = ['이터널스', '스파이더맨', '매트릭스', '경관의 피', '샹치', '스타워즈', '아이언맨']
print('type : ', type(movie_lst))
print('data : ', movie_lst)
movie_lst.append('모가디슈')
print('append : ', movie_lst)
movie_lst.insert(2, '임섭순')
print('insert : ', movie_lst)
movie_lst.remove('경관의 피')
print('remove : ', movie_lst)
del movie_lst[3]
print('del : ', movie_lst)
del movie_lst[3]
print('del : ', movie_lst)
idx = movie_lst.index('이터널스')
print('이터널스 idx : ', idx)
movie_lst.pop(0)
print('pop : ', movie_lst)
print('final_movie_list : ', movie_lst)
'''
요구사항
1. 모가디슈를 추가
2. 스파이더맨과 매트릭스 사이에 임섭순을 추가
3. 경관의 피 삭제
4. 매트릭스와 샹치 삭제
5. 이터널스의 인덱스를 구해서 pop() 함수를 이용한 삭제
6. 최종 리스트 출력
'''
728x90
'프로그래밍 언어 > Python' 카테고리의 다른 글
DAY_1-1 Python 기본 문법 (0) | 2022.02.05 |
---|---|
Day_3 다양한 변수 타입 (0) | 2022.01.27 |
DAY_1 강의 정리 및 Pycharm 셋팅 (0) | 2022.01.25 |