str = "banana"
str[0:3] #'ban' 0번째 인덱스에서 2번째 인덱스까지 출력
str[:3] # 위의 표현을 바꿔서 사용도 가능
str[3:] # 'ana' 3번째 인덱스에서 끝까지 출력
str[-3:] # 'ana' 음수는 문자열 뒤부터 출력가능하게 해줌
str[::-1] # 'ananab'문자열을 거꾸로 출력
str = 'BaNaNa'
str.lower() # 'banana' JS의 toLowerCase()와 동일
str.upper() # 'BANANA' JS의 toUpperCase()와 동일
JS와 동일하게 특정 문자열을 원하는 문자열로 변환해줌
'Python'.replace('P','J') # 'Jython'
문자열 내 원하는 특정 문자의 인덱스 찾기
s = 'hello Python~'
s.find('P') # 6
마지막 문자열 이후의 공백 제거할 수 있음.
하지만 원본 변수에 영향을 주는 것이 아니라 일시적으로 제거해서 사용가능한 것임.
s = ' hello ~ ~ '
s.rstrip() # ' hello ~ ~'
s # ' hello ~ ~ '
JS의 배열과 동일한 개념!
문자열을 리스트로 바로 만드는 방법(문자열 하나 하나 원소로 리스트 만들기)
list('hello') # ['h','e','l','l','o']
JS에선 문자열.split('')
과 같은 방법으로 했었는데, 파이썬에선 적용이 안되는 것 같다. ValueError: empty separator
라는 에러 문구와 함께 실행이 되지 않는 것을 확인할 수 있었다..
1) list.append()
리스트의 제일 마지막에 값 추가하는 기능.
JS의 push()와 동일한 역할!
prime = [3,7,11]
prime.append(5)
prime # [3,7,11,5]
2) list.sort()
리스트 내에서 순서를 정렬하는 기능.
JS보다는 조금 더 편리한 것 같다. 숫자의 경우 따로 콜백함수 지정해줄 필요 없이 크기순으로 알아서 정렬해주는 듯하다.
prime.sort()
prime # [3,5,7,11]
3) list.insert(원하는 위치/인덱스 값, 넣고자 하는 데이터)
리스트 내 원하는 위치에 데이터 삽입하는 기능
prime(0,2)
prime # [2,3,5,7,11]
4) del list[삭제하고자 하는 데이터의 인덱스 값]
리스트 내 원하는 원소 삭제하는 기능
del prime[4]
prime # [2,3,5,7]
5) list.pop()
JS와 동일하게 리스트 내 마지막 값,원소를 삭제하고 해당 값을 반환하는 함수
a = prime.pop() # 7
prime # [2,3,5]
a # 7
6) 리스트의 원소 값 변경하기
list[인덱스 값] = 새로운 원소 값
위의 형태로 새로 선언해주면 변경된다.
prime[0] = 1
prime # [1,3,5]
7) 리스트 내 원소 값 삽입의 또다른 방법
score = [1,2,3,4]
score += [5]
score # [1,2,3,4,5]
8) 리스트 내 리스트 삽입 가능하다
orders = ['potato' , ['pizza','Coke','salad'], 'hamburger']
orders[1] # ['pizza','Coke','salad']
orders[1][2] # ['salad']
9) sum(list)
반복문 사용 없이, 리스트의 전체 원소의 합을 간단하게 구할 수 있다.
one_to_ten = list(range(1,11)) # [1,2,3,4,5,6,7,8,9,10]
sum(one_to_ten) # 55
10) map을 이용해 리스트내 문자 원소를 숫자 원소로 바꾸기
str_list = ['1','0','1','1']
list(map(int,str_list)) # [1,0,1,1]
십진수를 이진수로 바꾸는 함수
👻 십진수를 이진수로 변환하는 방법!
십진수를 2로 나눈 몫을 구하고 그 수를 다시 2로 나누기! 몫이 0이 될때까지 반복
각 단계에서 구한 나머지를 거꾸로 쓰면 이진수가 완성!!!
bin(13) #'0b1101' `0b`는 뒤의 숫자가 이진수임을 뜻함
리스트와 비슷한? 자료형이라고 생각하자.
( )안에 데이터가 들어있는 형태의 자료형!
1) 변수끼리 값 맞바꾸기 용이
c = 10
d = 20
c,d = d,c
print(c,d) # 20 10
2) 튜플을 만들때 괄호를 써도 되고 안써도 됨!
number = 1,2,3,4,5 # (1,2,3,4,5)
3) 다만 원소가 없는 튜플을 만들 때는 괄호를 꼭 써주기
empty = ()
4) 원소 하나만 가진 튜플을 만들 땐 원소 뒤에 콤마(,) 꼭 찍어주기
one = 5, #(5,)
5) 리스트와 달리 원소값을 직접 바꿀 수 없기 때문에, 문자열처럼 오려붙이는 방법을 사용해야 한다
p = (1,2,3)
q = p[:1] + (5,) + p[2:]
q # (1,5,3)
r = q[:1] , 5 , p[2:]
r # ((1,),5,(3,))
6) 튜플을 리스트로, 리스트를 튜플로 쉽게 바꿀 수 있다.
p = (1,2,3)
q = list(p) # [1,2,3]
r = tuple(q) # (1,2,3)
JS의 padStart()와 같은 역할을 한다. 차이점으로는 원하는 숫자로 자릿수를 채우는 것이 아닌 0으로 채운다.
year, month, day = ('2023','7','3')
month = month.zfill(2) # '07'
day = day.zfill(2) # '03'
JS에서의 객체와 유사한 개념이다. {}안에 key와 value값을 가진다.
빈 dictionary 생성하는 법
# 아래의 두가지 방법을 통해 생성가능하다
a = {}
a = dict()
1) 원소의 삭제
리스트와 마찬가지로 del dictionary[key]
를 입력하면 된다
family = {'mom':'Kang','dad':'Jeon','bro':'Jeon','sis':'Jeon'}
del family['sis']
2) dict.keys() => key값들만 추출
JS의 Object.keys()와 동일역할인데, 추출한 값을 어떻게 사용할 수 있는지는 조금 더 공부해봐야 알 수 있을 것 같다!
family.keys() # dict_keys(['mom','dad','bro'])
3) dict.values() => value값들만 추출
마찬가지로 JS의 Object.values()와 동일 역할!
family.values() # dict_values(['Kang','Jeon'])
4) dict.items() => 딕셔너리의 원소의 키 & 값 들을 쌍으로 추출가능하다
family.items() # dict_item([('mom','Kang'),('dad','Jeon'),('bro','Jeon')])
5) in 을 이용해 해당 key값이 dictionary에 존재하는지 확인가능
'dad' in family # True
'sis' in family # False
ord()는 문자에 해당하는 코드 값 출력하고, chr()는 역으로 코드 값에 해당하는 문자열 출력.
ord('A') # 65
ord('Z') # 90
ord('a') # 97
ord('z') # 122
ord('0') # 48
ord('9') # 57
chr(65) # 'A'
한글에 대해서도 사용가능하다
ord('가') # 44032
chr(55197) # '힝'
줄바꿈을 기준으로 문자열을 분할해서 리스트를 만드는 방법
love = ```L is for the way you look at me
O is for the only one I see
V is very, very extraordinary
E is even more than anyone that you adore can```
love.split('\n') # ['L is for the way you look at me','O is for the only one I see','V is very, very extraordinary','E is even more than anyone that you adore can']
love.splitlines() # ['L is for the way you look at me','O is for the only one I see','V is very, very extraordinary','E is even more than anyone that you adore can']
구분점
.join(list)리스트의 각 원소들을 구분점으로 연결해서 하나의 문자열로 출력을 가능하게 해줌!
JS에서는 배열.join(구분점
) 형식으로 작성했지만, 파이썬에서는 순서가 조금 다르다.. 유의하도록...!!!
JS와 유사한 개념! {}안에 key:value
형태가 아닌 값만 들어있고, 중복 원소 갖지 않는 등.. 비슷하다고 생각하면 될 것 같다
빈 set 생성하는 법
a = set()
1) set.add()
set 안에 원소 추가하는 방법
fruits = {'apple','banana','orange'}
fruits.add('mango')
fruits # {'mango','apple','orange','banana'}
2) 교집합(&)과 합집합(|)
set간의 원소가 겹치는 부분(= 교집합)을 &
을 통해 추출해낼 수 있고, set간의 전체 원소(= 합집합)를 |
을 통해 추출해낼 수 있다.
companies = {'apple','microsoft','google'}
# 교집합
fruits & companies # {'apple'}
# 합집합
fruits | companies # {'apple','mango','microsoft','orange','google','banana'}
위 방법 이외에도 합집합과 교집합을 추출해내는 방법이 있다
list_of_sets = [fruits,companies]
# 교집합
set.intersection(*list_of_sets) # {'apple'}
# 합집합
set.union(*list_of_sets) # {'apple','mango','microsoft','orange','google','banana'}
3) JS와 마찬가지로 중복원소를 가지지 않는다.
alphabet = list('google')
alphabet # ['g','o','o','g','l','e']
set(alphabet) # {'e','o','g','l'}
4) 원소의 순서가 유지되지 않고 변한다.
5) set끼리 뺄셈도 가능하다.
S1 = {1,2,3,4,5,6,7}
S2 = {3,6,9}
S1 - S2 # {1,2,4,5,7}
일종의 프로그램 꾸러미? 모음?
[1] import 모듈
: 모듈만 불러왔기 때문에, 모듈 내의 변수를 사용하기 위해선 모듈.변수
의 형식으로 작성해야 한다.
import 모듈
[2] from 모듈 import 이름
: 모듈 내 이름을 콕 찍어서 가지고 오는 방법이기에, 모듈을 생략하고 변수명
의 형식으로 사용가능하다.
from 모듈 import * # 해당 모듈에 있는 것 전부(*)를 가지고 오겠다는 의미
del 모듈
from importlib import reload
reload(모듈)
1) math 모듈
: 수학적인 계산 기능!
import math
math.sqrt(4) # 2 => 4의 제곱근
math.pi # 3.1415926535897931 => 원주율
2) calendar 모듈
: 달력 불러오기 기능!
import calendar
calendar.prmonth(2023,7)
# July 2023
Mo Tu We Th Fr Sa Su
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
3) tkinter 모듈
from tkinter import *
widget = Label(None, text = 'I love Python!')
widget.pack()