이숭간 공부기록

파이썬 기초함수 및 자료구조 본문

공부공부/Python

파이썬 기초함수 및 자료구조

이숭간 2020. 7. 31. 11:19
728x90

다른 언어에서와 유사한 부분이 많으므로 내가 나중에 보고 기억하기 쉽게 파이썬만의 라이브러리 위주로 정리할것임

-----------------------------------------------------------------------------------------------------

<숫자처리함수>

  • 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