리스트에 원소 추가하기, append()
리스트.append(추가할 원소)
특정 위치에 원소 추가하기, insert()
리스트.insert(추가할 원소의 위치, 추가할 원소)
특정 원소 삭제하기, remove()
리스트.remove(삭제할 자료)
리스트 원소 정렬하기, sort() #기본적으로 오름차순으로 정렬된다
리스트.sort() #소괄호 안에는 아무것도 적지 않는다
리스트와 문자열은 순서가 있다는 공통점이 있다
순서가 있는 원소로 구성된 자료형을 시퀀스 자료형이라고 한다
- 시퀀스 자료형의 5가지 특징
1. 원소에는 순서가 있다
이 순서를 '인덱스'라 하고
시퀀스 자료형은 순서가 있어서 특정 위치의 원소만 가져오는 인덱싱과 슬라이싱을 할 수 있다
인덱싱(인덱스에 일치하는 문자만 출력)
슬라이싱(print(변수명[2:4]) #2부터 4전까지의 리스트를 출력)
print(변수명[-1]) #뒤에서 1번째 원소를 가져와라는 뜻
2. 멤버를 조회할 수 있다
in연산자를 이용하면 특정 원소가 들어있는지 확인 가능
조회할 원소 in 시퀀스
a = 'once'
print('o' in a) #true
3. 길이를 확인할 수 있다
원소가 여러 개 들어있는데 총 몇 개인지 알고 싶을 떄는 len()을 사용
len(길이를 알고 싶은 시퀀스 자료)
4. 연결 연산을 할 수 있다
같은 시퀀스 자료형 두 개를 +연산자로 이어 붙일 수 있다
c = ['t', 'w', 'i'] + ['c', 'e']
print(c)
['t', 'w', 'i', 'c', 'e']
5. 반복 연산을 할 수 있다
*연산자 사용
d = ['hi'] * 3
print(d)
['hi', 'hi', 'hi']
반복문
별찍기
for i in range(1, 6):
print( '*' * i )
for문
무엇을 반복할지 '명령'을 내리고, 얼마만큼 반복할지 '범위'도 넣어줘야 한다
for 변수 in 시퀀스:
<반복할 명령>
for i in [1, 2, 3]:
print('*')
*
*
*
#원소가 3개이니 시퀀스의 길이도 3,
즉 세 번 반복한다는 뜻
for x in 'abcdefg': #문자의 수 만큼 x를 7번 반복한다
print(x)
for i in [1, 2, 3, 4]: #반복문의 변수 i가 명령에 그대로 사용됨
print(i)
1
2
3
4
sum = 0
for i in [3, 6, 9]:
sum = sum + i
sum = sum + i
3 = 0 + 3
sum = sum + i
9 = 3 + 6
sum = sum + i
18 = 9 + 9
# 실행 결과 sum은 18이 된다
- 연속된 숫자로 이루어진 시퀀스 자료형에는 range()함수를 사용한다
for i in range(1, 21): #1~20까지
for i in range(5) #0, 1, 2, 3, 4 / 숫자 하나만 적으면 인덱스 0을 생략한 것으로 인식한다
- 반복문의 범위로 range() 함수 사용하기
반복할 범위를 알고 있다면 #구간 반복
range(a, b) #a부터 b-1까지 반복
반복할 횟수를 알고 있다면 #횟수 반복
range(a) #a번 반복
1. 구간으로 반복하기
for 변수 in range(a, b): #반복할 범위는 a부터 b-1까지
<반복할 명령>
for i in range(5, 8):
print(i)
5
6
7
2. 횟수로 반복하기
for 변수 in range(a): #a는 반복할 변수
<반복할 명령>
count = 0
for i in range(10):
count = count + 1 #반복할 명령
print(count) #10출력
while문
특정 조건이 주어지고 이 조건이 참일 경우 반복할 명령에는 whil문을 사용한다
while 조건: #조건이 참이면 명령을 반복 실행하고, 거짓이면 명령을 실행하지 않고 반복문에서 빠져나온다
<반복할 명령>
#if문은 조건이 참일 겨웅 명령을 한번만 실행하는 반면
while문은 계속 반복해서 실행한다는 차이점이 있다
i = 3
while i > 0: #i는 3이므로 i > 0조건은 참이다 그러므로 이 명령은 반복실행된다
print(i)
i = i - 1
print('땡')
3
2
1
땡
#3부터 1까지 거꾸로 출력하고 마지막에 땡을 출력한다
i = 1
while i > 0: #항상 true
print(i)
i = i + 1
위와 같이 while문의 조건이 항상 참일 경우 코드가 무한정 실행되는 것(무한루프)를 멈추고 싶을 때
break를 실행하여 반복문에서 탈출하도록 하자
#break는 보통 조건문과 함께 쓰여서 조건이 참일 경우 반복문에서 탈출하는 구조로 많이 사용된다
i = 0
while True: #무한루프 발생
print('knock')
if i >= 3:
break #i가 3보다 크거나 같으면 반복문 탈출
i = i + 1
knock
knock
knock
knock
#4번 출력 후 종료
for문을 멈추게 하고 싶을 때도 break문을 사용
for i in range(1, 5):
if i == 3:
break
print(i)
print('i가 3입니다.')
1
2
i가 3입니다.
#i가 3이 되는 순간 반복문에서 빠져나와 그 다음 명령인 print('i가 3입니다.')가 실행
continue문은 반복문을 탈출하는 게 아니라 맨 처음으로 돌아가게 한다
for i in range(1, 4):
if i == 2:
continue
print(i)
1
3
#i 가 2일 때 i == 2의 경우를 만족하므로 continue문을 따라 반복문의 맨 처음으로 돌아간다
remove()와 비슷한 pop()
remove() 소괄호 안에 지우고 싶은 자료를 적는 반면
pop() 소괄호에는 인덱스를 넣는다
리스트.pop(i) #i는 제거할 원소의 인덱스
my_list = [1, 2, 3, 4, 5]
my_list.pop(0) #0번째 인덱스 제거
print(my_list)
[2, 3, 4, 5]
my_list = [, 2, 3, 4, 5]
my_list.pop() #마지막 원소 제거
print(my_list)
[2, 3, 4]
#pop()의 소괄호 안에 아무것도 없으면 마지막 원소를 지우라는 뜻
- pop()은 제가한 원소를 반환(함수를 사용하려고 불러낸 위치에 결괏값을 알려주는 것)해준다
my_list = [1, 2, 3, 4, 5]
print(my_list.pop(0)) #인덱스 0인 원소를 제거하고 그 값을 출력
1
#remove()는 반환 기능이 없다
- count()
시퀀스 안에 있는 특정 자료의 개수가 몇 개인지 알려주는 함수
len()은 시퀀스 전체 자료의 개수를 알려준다
my_seq = [2, 2, 2, 4, 4]
print(my_seq.count(2))
3
- 문자열을 쪼개어 리스트로 만드는 함수는 split()
문자열.split(c) #c는 문자열을 쪼개는 기준 문자열
1. 문자 'a'를 기준으로 문자열 쪼개기
원래 문자열에서 쪼갤 기준이 될 문자열을 정할 수 있다
my_str = 'Ialikeacandy'
print(my_str.split('a'))
['I', 'like', 'candy']
#기준으로 사용한 문자열 'a'는 리스트로 바뀔 때 사라진다
2. 공백을 기준으로 문자열 쪼개기
my_str = '1 2 3 4 5'
print(my_str.split())
['1', '2', '3', '4', '5']
3. 쉼표를 기준으로 문자열 쪼개기
element = 'Na,Mg,Al,Si'
print(element.split(','))
['Na', 'Mg', 'Al', 'Si']
#문자열을 split()로 쪼개어 만든 리스트의 원소는 문자열이다
리스트를 합쳐 문자열로 만드는 함수는 join()
접착 문자열.join(리스트)
#접착 문자열은 리스트의 원소를 이어 붙일 떄 원소 사이에 들어갈 문자열
#join()함수를 사용하려면 요소 두 개가 필요하다
문자열로 만들 리스트 자료, 리스트의 각 원소를 이어 붙일 접착제 역할을 하는 문자열
1. 문자열 '&'를 접착제로 사용해 리스트 모으기
dessert = ['Coffee', 'Donut']
print('&'.join(desset)) #접착제 역할을 하는 문자열은 '&' 외에 자유롭게 넣을 수 있다
'Coffee&Donut'
2. 접착제 역할을 하는 문자열 없이 리스트 모으기
#작은따옴표 안을 비워 ".join(리스트)
dessert = ['ice', 'cream]
print(".join(dessert))
'icecream'
#join() 함수를 사용해 리스트 원소를 문자열로 합치려면 원소가 모두 문자열이어야 한다
다른 자료형이 포함되어 있으면 join()을 사용할 때 오류가 발생
리스트는 값을 수정, 추가, 삭제하기 쉬운 자료형
=> 저장한 값을 누구든 쉽게 바꿀 수 있다
- 값이 바뀔 위험이 없으면서 여러 자료를 담을 수 있는 자료형은 튜플이라 한다
리스트를 대괄호[]로 표현했다면 튜플은 소괄호()를 사용한다
튜플은 원소가 하나만 있더라도 쉼표를 꼭 붙여야 한다
() #빈 튜플
('a',) #원소가 하나여도 쉼표는 필수!
'a', 'b', 'c' #튜플은 소괄호가 없어도 괜찮다
1. 인덱싱, 슬라이싱을 할 수 있다
#튜플 역시 원소끼리의 순서가 있는 시퀀스 자료형이기 때문
my_tuple = ('t', 'w', 'i', 'c', 'e')
print(my_tuple[1]) #인덱싱 가능
print(my_tuple[2:4]) #슬라이싱 가능
w
('i', 'c')
2. 원소를 조회하고 길이를 확인할 수 있다
my_tuple = ('t', 'w', 'i', 'c', 'e')
print('t' in my_tuple) #원소 조회 가능
print(len(my_tuple)) #길이 확인 가능
True
5
3. 더하기 곱하기 연산을 할 수 있다
my_tuple = ('i', 'c', 'e')
print(('e', 'l') + my_tuple) #더하기 연산
print(my_tuple * 2) #곱하기 연산
('e', 'l', 'i' 'c', 'e')
('i' 'c', 'e', 'i' 'c', 'e')
4. 원소의 수정, 추가, 삭제는 불가능
(리스트와 튜플의 가장 큰 차이는 원소를 수정, 추가, 삭제할 수 없다는 점
=> (튜플이 한 번 만들어지면 고정되어 자료를 더 이상 수정할 수 없다 / 수정 시 오류 발생))
파이썬의 자료형에서 짝꿍 모양의 자료를 딕셔너리라고 한다
딕셔너리는 중괄호{}로 묶어서 표현
딕셔너리 안에는 짝꿍을 이루는 자료를 한 쌍 또는 여러 쌍을 넣을 수 있다
자료를 여러 쌍 넣을 때는 쉼표로 구분
{key1:value1, key2:value2}
my_dict1 = {} #빈 딕셔너리
my_dict2 = {'hometown':'Seoul'} #한 쌍의 자료
person = {'name':'Alice', 'age':10} #여러 쌍의 자료
#딕셔너리의 기본형은 중괄호 안에 콜론과 양 옆의 두 요소로 이루어져 있다
이 두 요소를 각각 key와 value라고 한다
콜론을 기준으로 왼쪽이 key, 오른쪽이 value이다
1. key - 열쇠처럼 자료를 꺼낼 수 있는 도구
key를 이용하여 딕셔너리의 자료를 꺼내거나 추가, 삭제할 수 있다
person = {'name':'Alice', 'age':10}
2. value - 딕셔너리에서 key로 꺼낼 수 있는 자료
person = {'name':'Alice', 'age':10}
1. 딕셔너리의 가장 큰 특징은 key를 알면 value를 알 수 있다는 것
딕셔너리[key] #key의 짝꿍 value를 가져온다
person = {'name':'Alice', 'age':10}
print(person['name']
Alice
2. 딕셔너리에 자료 추가하기
딕셔너리[key] = value
#추가할 value를 넣으면 딕셔너리의 마지막 자료로 추가된다
person = {'name':'Alice', 'age':10}
person['hometown'] = 'Seoul'
print(person)
{'name':'Alice', 'age':10, 'hometown':'Seoul'}
3. 딕셔너리의 자료 삭제하기
del 딕셔너리[Key]
person = {'name':'Alice', 'age':10}
del person['name']
print(person)
{'age':10} #name의 짝꿍인 Alice도 함께 삭제된다
#딕셔너리의 key는 변할 수 없다
(자료형에서 원소를 자유자재로 추가, 수정, 삭제할 수 있는 리스트는 key로 사용이 불가하다)
- 리스트를 key로 사용할 경우
my_dict1 = {[1 2, 3]:'Number'}
print(my_dict1)
오류 #리스트는 수정이 가능한 객체이기에 딕셔너리 사용 불가
-튜플을 key로 사용할 경우
my_dict1 = {(1, 2, 3):Number}
print(my_dict1)
{(1, 2, 3):Number}
#원소가 여러 개인 자료를 key로 사용하고 싶다면 토플을 사용
(딕셔너리에는 key가 두 개 이상 같아도 안된다 / 같은 key가 두 개 이상일 경우 value는 하나만 저장되기 때문)
my_dict = {1:'One', 1:'Yi'} #value는 하나만 저장된다
print(my_dict)
{1:'Yi'}
입력 => 작업 => 출력
함수는 특정 기능을 실행하는 코드 또는 코드의 모임
( =>파이썬을 통해 어떤 입력을 받아서 특정 명령을 실행하고 그 결과를 알려주는 역할)
내장함수 => 파이썬에 저장된 함수
(파이썬 안에 저장되어 있기 때문에 가져다 쓰면 되니까 매우 편리하다)
print(), input(), len()등이 있다
- 자주 사용하는 내장 함수
1. input()과 print()
input() 사용자로부터 자료를 입력받는 함수
print() 자료를 화면에 출력하는 함수
(input()함수로 입력받은 자료는 뭐든지 문자열로 인식)
2. max()와 min()
모든 자료형의 최댓값, 최솟값을 구해둔자
문자열 자료는 사전순으로 정렬했을 때 뒤에 있을수록 큰 값
3, sum()과 len()
내장 함수는 편리하지만 우리가 원하는 작업을 할 수 있는 함수가 모두 존재하지는 않는다
그래서 함수를 직접 만드는데 이를 사용자 정의 함수라고 한다
def 함수 이름(매개변수): #매개변수가 없을 경우 생략
<실행할 명령>
return 반환값 #반환하지 않을 경우 생략
def my_func(a, b):
c = 2 * (a + b)
return c
print(my_func(3, 4)) # 2 * (3 + 4) = 14
- 사용자 지정 함수 만드는 방법
1. def 키워드로 시작
정의하다 defin의 줄임말
2. 함수 안에 값 전달
만약 함수 안에서 변수를 사용해야 한다면
함수 이름 옆에 소괄호를 붙이고 변수 이름을 적는다
소괄호 안의 변수를 매개변수라 한다
매개변수를 여러 개 사용할 때는 쉼표 사용
모두 적은 후 콜론을 붙인다
3. 줄 바꾸고 들여쓰기를 한 후 명령 입력
4. return으로 돌려주기
함수 안에서 만들어진 결괏값을 함수 밖에 알려 주고 싶다면
return키워드와 함께 반환할 값을 적어줘야 한다
def 함수 이름(매개변수):
<반복할 명령>
return 반환값
def my_func(a, b):
c = 2 * (a + b)
return c
(함수를 통과한 뒤 어떤 값을 함수 밖에서 알려면 return 키워드를 사용)
내장 함수를 사용하던 것처럼 사용자 정의 함수 이름을 적은 후 이어서
소괄호 안에 값을 입력하고 실행
함수 이름(인자1, 인자2, 인자3) #매개 변수 없는 함수는 인자 생략
#소괄호 안에 입력하여 함수 내부로 전달하는 값을 인자라 한다
함수 내부로 값을 전달하는 변수가 매개변수 였다면,
인자란 매개변수에 저장되는 실제 값을 의미
#함수를 정의할 떄
def my_func(a, b): #a, b는 매개변수
c = 2 * (a + b)
return c
#함수를 사용할 때
my_func(3, 4) #3, 4는 인자
#함수의 사용법을 알려주는 help()함수
함수의 소괄호 안에 사용법이 궁금한 함수의 이름을 적어 실행
help(len)
함수 안에서 일어나는 일은 밖에서 알 수 없다
(=함수 안에서 정의한 변수는 함수 밖에서는 사용할 수 없다)
함수 밖에서 정의한 변수 - 전역 변수
함수 안에서 정의한 변수 - 지역 변수
- 전역 변수
x = 'Hi!'
def my_func():
print(x)
my_func() #함수 안에서 사용해도 ok
print(x) #함수 밖에서 사용해도 ok
Hi!
Hi!
- 특정 범위 안에서만 사용하는 지역변수
def my_func():
x = Hi!
print(x)
my_func() #함수 안에서 사용하면 ok
print(x) #함수 밖에서 사용하면 오류 발생
Hi!
오류 발생!
#변수 x가 함수 my_func안에 정의 되었으므로 오류가 발생했다
len(자료) => 함수 #특정 기능을 실행하는 코드로, 매개변수를 이용하여 자료를 함수 내부로 전달
자료.count() => 메서드 #특정 자료가 자기만 사용할 수 있게 만들어 둔 전용함수 / 함수 뒤에 점 사용
- 함수
my_list = [1, 2, 3]
print(my_list)
-메서드
my_list = [1, 2, 3]
my_list.append(4)
#메서드를 정확히 이해하려면 '객체'라는 심화된 개념을 알아야 한다
컴퓨터 프로그램을 만들려면 변수와 함수를 포함하여 아주 많은 코드 필요
=> 프로그램에서 사용할 함수와 변수, 여러 자료를 미리 모아 놓는 방법을 '모듈'이라 한다
#특정 목적을 위해 활용할 수 있도록 함수와 자료를 모아 놓은 것을 모듈이라 한다
- 모듈 불러오기
파이썬의 모듈에는 대표적으로 math와 random이 있다
파이썬에 있는 모듈을 사용하려면 먼저 불러와야한다
import 불러올 모듈의 이름
- 모듈 사용하기
모듈을 사용하려면 모듈 안에 어떤 것들이 들어 있는지 알아야 한다
import random #먼저 모듈을 불러온다
random.randrange(a, b) #range(a, b) 중 원소 한 개를 아무거나 가져온다
#randrange()는 특정 범위의 숫자 중 아무거나 하나만 뽑아주는 함수
import random
print(random.randrange(0, 2)) #0이나 2미만인 수 중 아무거나 한 개 출력
- 모듈 확인하기
1) math모듈
math.pi #3.14로 시작하는 원주율 파이값이 저장된 자료 (원주율의 소수점 아래 15번째까지 저장된 값)
math.pow(a, b) #a의 b제곱값을 반환하는 함수
math.ceil(숫자형) #소수점 아래 숫자를 올림하여 정수를 반환하는 함수
import math
print(math.ceil(3.1)) #3.1을 올림해 4 출력
print(math.ceil(3.9)) #3.9를 올림해 4 출력
4
4
2) random 모듈
번호 추첨이나 업다운 게임과 같이 숫자를 무작위로 결정해야 할 때 사용
random.randrange(a, b) #a이상 b미만인 연속된 숫자로 이루어진 시퀀스 중 하나를 반환
random.choice(seq) #시퀀스의 원소 중 하나를 반환
random.sample(seq, i) #시퀀스의 원소 중 아무거나 i개를 반환
import random
random.choice(['a', 'e', 'i', 'o', 'u']) #알파벳의 모음 중에서 하나 뽑기
import random
random.sample(range(1, 46), 6) #1부터 45까지의 숫자 중에서 아무거나 6개 뽑기
#모듈은 py라는 확장자 파일로 만들 수 있다
자주 쓰는 함수나 변수를모듈로 정의해 두면 나중에 코드를 번거롭게 다시 입력할 필요가 없다
모듈을 사용할 수 있다는 것은 파이썬의 강점
'프로그래밍 언어 > Python' 카테고리의 다른 글
파이썬 입문자의 스터디 기록 1 (0) | 2023.01.30 |
---|