이숭간 공부기록
파이썬 기초함수 및 자료구조 본문
다른 언어에서와 유사한 부분이 많으므로 내가 나중에 보고 기억하기 쉽게 파이썬만의 라이브러리 위주로 정리할것임
-----------------------------------------------------------------------------------------------------
<숫자처리함수>
- abs(x) - 절댓값
- pow(x,y) - x^y (x의 y승)
- max(x,y), min(x,y) - 최댓값, 최솟값
- round(x) = 반올림
# math 라이브러리
- floor() = 내림
- ceil() = 올림
- sqrt(x) = 루트x
# randon 라이브러리
- random() = 0.0~1.0 미만의 무작위 난수생성
- random()*10 = 0~10 미만의 난수 (실수)
- int(random()*10) = 0~10 미만의 정수
- int(random()*10)+1 = 1~10이하의 임의의 정수
- int(random()*x) = 0~x 미만의 임의의 정수
- int(random()*x)+1 = 1~x이하의 임의의 정수
- randrange(x,y) = x,y미만의 임의의 값 생성
- randint(x,y) = x~y 이하의 임의의 값 생성
- range(start, end, step) = start부터 end직전까지 step간격으로 이루어진 정수리스트 반환
- shuffle(list) = 리스트값을 무작위로 바꿈
- sample(list, 1) = list라는 리스트에서 1개를 무작위로 뽑겠다.
-----------------------------------------------------------------------------------------------------
<슬라이싱>
필요한 정보만 잘라서 가져오는 기능
jumin = "970619-1234567"
print("성별: " + jumin[7]) --> jumin에서 7번째자리에 해당하는 1을 출력함
jumin[0:6] --> 0부터 6직전까지
jumin[7:14] --> 7부터 14 직전까지
jumin[-7:] --> 맨 뒤에서 7번째부터 끝까지
시작과 맨 처음이고 끝이 맨 마지막을 말할경우 생략할수있음
-----------------------------------------------------------------------------------------------------
<문자열 처리함수>
python = "Python is Amazing"
- lower() - 모든문자를 소문자로 변환 --> python.lower()
- upper() - 모든문자를 대문자로 --> python.upper()
- issupper() - 대문자가 맞을때 true를 반환
- len("ddd") - 문자열 전체길이를 반환
- replace("seungjin", "nice") - seungjin을 찾아서 nice로 바꿔줌
- index("x", y) - 문자열에서 y를 시작위치로하여 x이라는 문자가 몇번째에 있는지를 반환해줌
- --- index("x") 하고나서 그 결과값+1을 시작위치로 설정하면 처음찾은 x 이후에있는 x를 찾아줌
- find("java") - 문자열에서 java를 찾아줌
- find와 index의 차이점 - 원하는값이 없을때 find는 -1을 반환하고 index는 오류남
- count("n") - n이 몇번나오는지 반환
<문자열 포맷>
방법1 - %
- print("나는 %d살 입니다." %20) --> d는 정수값만 가능
- print("나는 %s을 좋아해요." %"파이썬") --> s에는 string
- %c --> c는 문자하나 char
- print("나는 %s 색과 %s색을 좋아해요." %("파란", "빨간"))
방법2 - {}
- print("나는 {}색과 {}색을 좋아해요." .format("파란","빨간"))
- {}안에 숫자를 넣어서 응용할수도있다. (순서를 바꿀수 있음) 숫자없으면 그냥 순서대로
- {}안에 변수이름을 넣어서 사용가능. format(age = 20, color="빨간") 라고하고 {}안에 age, color를 넣어줄수있음.
방법3 - f
age = 20
color = "빨간"
print(f"나는 {age}색과 {color}색을 좋아해요.") --> 위에서 선언한 변수를 가져다 쓸 수 있음
<탈출문자>
- \n - 줄바꿈
- \ - 특수문자를 일반문자처럼 출력해줌
- \\ - 하나의 역슬래쉬로 바뀌게됨
- \r - 커서를 맨 앞으로 이동 ex) Apple\rpine --> pineApple 로 출력됨
- \b - 백스페이스와동일한기능 (한글자 삭제)
- \t - 탭역할
*퀴즈 - 비밀번호만들기*
add = "http://naver.com"
end = add.find(".")
start = add.find("/")
remain = add[start+2:end]
print(remain)
print(remain[:3]+ str(len(remain)) + str(remain.count("e")) + "!")
-----------------------------------------------------------------------------------------------------
<리스트> [] ( 자바에서 배열과 같음)
list = [1,2,3]
list.append(4)
print(list)
list.insert(1, 1.5)
print(list)
[1, 2, 3, 4]
[1, 1.5, 2, 3, 4]
print(list.pop())
print(list)
4
[1, 1.5, 2, 3]
<정렬>
num_list = [1,4,6,8,3]
num_list.sort()
print(num_list)
[1, 3, 4, 6, 8]
num_list.reverse() -> 정렬된거 다시 거꾸로 -> [8,6,4,3,1]
num_list.clear() -> 리스트값 다 없애기
#다양한 자료형과 사용가능
num_list=[1,2,3,4,5]
mix_list = ["조세호", 20, True]
#리스트 확장
num_list.extend(mix_list) --> 넘, 믹스 순서대로 리스트 합쳐짐
-----------------------------------------------------------------------------------------------------
<dic> 키와 값 - 자바 맵이랑 비슷 {:}
키는 중복될수 없다.
cabinet = {3:"유재석", 100:"김태호"}
print(cabinet[3]) # 키가 3에 해당하는 값 반환
print(cabinet[100])
print(cabinet.get(3)) # 중괄호를 이용하는것과 동일한데 없는값에 대해서 다른결과
#print(cabinet[5]) #오류
print(cabinet.get(5)) #오류대신 none출력되고 계속 진행
print(cabinet.get(5,"none대신 출력값 설정가능"))
print(3 in cabinet) # 3이 있느냐? 에 따라 true, false 출력
del cabinet[3] # 키값3에해당하는 애를 지움
print(cabinet.keys()) # 키값들만 출력
print(cabinet.values()) #값들만 출력
print(cabinet.items()) # 쌍으로 출력
print(cabinet.clear()) # 모든값 지움
-----------------------------------------------------------------------------------------------------
< 튜플> ()
리스트와다르게 내용의 변경이나 추가 할수없음. 속도가 리스트보다 빨라서 변경되지 않는 목록에서 유용
menu = ("치즈", "라면")
print(menu[0])
print(menu[1])
menu.add 안됨
(name, age, hobby) = ("김종국", 30, "코딩") 이라고하면 각각의 해당되는 변수에 값이 저장됨
-----------------------------------------------------------------------------------------------------
<세트> 집합 - 순서없고 중복안됨 {}
my_set = {1,2,3,3,3}
print(my_set) # {1,2,3} -- 중복이 안되므로
java = {"재석", "명수", "하하"} // 집합
python = set(["재석","준하"]) // 리스트를 set()으로 감싸면 집합이 됨
# 교집합 구하기 java, python 둘다 가능한 개발자를 출력하시오
print(java & python) or print(java.intersection(python))
#합집합 구하기
print(java | python) or print(java.union(python))
#차집합 구하기
print(java - python) or print(java.difference(python))
#집합에 원소추가
python.add("태호")
#집합에 원소제거
python.remove("재석")
-----------------------------------------------------------------------------------------------------
<자료구조의 변경>
menu = {"커피","우유", "주스"}
print(menu, type(menu)) # {"커피","우유", "주스"}, <class 'set'>
menu = list(menu)
print(menu, type(menu))
menu = tuple(menu)
print(menu, type(menu))
결과
{'주스', '커피', '우유'} <class 'set'>
['주스', '커피', '우유'] <class 'list'>
('주스', '커피', '우유') <class 'tuple'>
*퀴즈퀴즈* 20명중에서 중복없이 치킨당첨자1명, 커피당첨자 3명뽑기
from random import *
# 내가한거 id = [1,2,3,4,5,6,7,8,9,10]
id = range(1,21) # 1부터 21직전 즉 20까지 숫자를 생성 - type이 range임
id = list(id) # 타입바꿔주기
shuffle(id)
winners = sample(id,4) # 4명중 1명은 치킨,3명은 커피
print("치킨당첨자 : {0}".format(winners[0]))
print("커피당첨자 : {0}".format(winners[1:4]))
'공부공부 > Python' 카테고리의 다른 글
파이썬 기본_2 (feat.나도코딩 유투브) (0) | 2020.07.31 |
---|