자료형
파이썬에서는 자료형을 알아야 합니다.
자료형 종류에는 정수형, 실수형, 복소수형, 문자열, 리스트, 튜플, 사전 등이 있습니다.
지수 표현 방식 : e나 E 뒤에 오는 수는 10의 지수부를 뜻한다 ex) 1e5 == 10의 5 제곱
a = 75.25e1
print(a)
#결과 : 752.5
실수형 : 컴퓨터는 이진수 체계이기 때문에 실수 정보를 표현하는 정확도의 한계가 있습니다.
ex) 0.3 + 0.6 = 0.9이지만 컴퓨터로 계산해 보면 0.8999999999999999 가 나온다
a = 0.3 + 0.6
print(a)
#결과 : 0.8999999999999999
a = 0.3 + 0.6
print(round(a,1)) # round함수를 이용하여 반올림해줘서 계산 한다.
if round(a,1) == 0.9:
print(True)
else:
print(False)
#결과 :
0.9
True
사칙연산과 나머지 연산자: / (나누기 연산자)를 이용하면 나눠진 결과의 실수형으로 반환됩니다.
% (나머지 연산자) 를 이용하여 홀수인지, 짝수인지 체크할때 사용 할 수 있다.
// (몫 연산자) 몫을 얻기 위해 사용한다.
** (거듭제곱연산자)
리스트 자료형 : 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형입니다.
#리스트 (list)
numbers = [2,3,4,5,11,13] 안의 값은 리스트의 요소
names = [”윤수”, “혜린”, “재훈”, “민희”]
#인덱싱(indexing)
print(names[1]) → 결과는 혜린! : 파이썬에서 인덱싱은 0부터 시작
print(numbers[1] + numbers[3]) → 결과는 3 + 5 = 8 이 나옴
print(numbers[-1]) → 13 이 출력 : 파이썬에는 - 인덱스 개념이 있음 (뒤에서부터 카운트)
print(numbers[-2])→ 11 이 출력 : 파이썬에는 - 인덱스 개념이 있음
numbers[1] = 7 → [2, 7, 4, 5, 11, 13]으로 바뀌어서 출력
#리스트 슬라이싱 (list slincing)
print(numbers[0:4]) → 2,3,4,5 출력 : 인덱스 0부터 3까지 출력됨
print(numbers[2: ]) → 4,5,11,13 출력 : 인덱스 2부터 마지막 요소까지 출력됨
print(numbers[ :3]) → 2,3,4 출력 : 인덱스 0부터 2까지 출력됨
#리스트 컴프리헨션
array = [i for i in range(10)]
print(array)
#결과 :
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
print(array)
# 1부터 9까지의 수들의 제곱 값을 포함하는 리스트
array = [i * i for i in range(1,10)]
print(array)
#결과:
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[1, 4, 9, 16, 25, 36, 49, 64, 81]
한 줄 만에 원하는 리스트를 초기화해서 삽입할 수 있다! 소스코드가 매우 간결해진다!!!
리스트 컴프리헨션을 이용하면 2차원 리스트를 생성할 때 효과적이다!
N X M 크기 : ex) array = [[0] * m for _ in range(n)]
4 X 3 행 :
0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 |
n = 3
m = 4
array = [[0] * m for _ in range(n)] #언더바는 변수의 값을 무시하고 반복만 실행해준다.
print(array)
#결과 :
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
#리스트 함수
append : 오른쪽 끝에 값 추가 ( 변수. append(값))
insert : 원하는 위치에 값 추가 (insert(위치, 값))
del : 원하는 위치에 값 제거 ( )
remove : 처음 나오는 자료 원소 제거 (변수. remove(값))
len : 리스트의 요소 개수
in: 원소 조회 (원소 in 변수)
count : 변수명. count(특정값)
reverse : 변수명. reverse()
#리스트 정렬
numbers = [19, 13, 2, 5, 3, 11, 7, 17]
new_list = sorted(numbers, reverse = True)
print(new_list)
#결과 : [19, 17, 13, 11, 7, 5, 3, 2]
numbers = [19, 13, 2, 5, 3, 11, 7, 17]
numbers.sort()
print(numbers)
#결과: [2, 3, 5, 7, 11, 13, 17, 19]
리스트 정렬에서는 sorted와 sort를 쓸 수 있다. 여기서 두 함수의 차이가 있습니다.
sorted : 기존 리스트는 건드리지 않고, 정렬된 새로운 리스트를 리턴.
sort : 아무것도 리턴하지 않고, 기존 리스트 그 자체를 정렬시킴.
#실습예시
# 빈 리스트 만들기
numbers = []
print(numbers)
# numbers에 값들 추가
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)
print(numbers)
# numbers에서 홀수 제거
del numbers[0]
del numbers[0]
del numbers[0]
del numbers[1]
del numbers[2]
print(numbers)
# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0, 20)
print(numbers)
# numbers를 정렬해서 출력
numbers.sort()
print(numbers)
#실행결과
[]
[1, 7, 3, 6, 5, 2, 13, 14]
[6, 2, 14]
[20, 6, 2, 14]
[2, 6, 14, 20]
a = [1,2,3,4,5,5,5]
remove_set = {3,5} #집합 자료
result = [i for i in a if i not in remove_set]
print(result)
#결과 :
[1,2,4]
#시퀀스 자료형
문자열 + 리스트 = 순서가 있는 자료형
특징 : 원소 간의 순서가 존재한다! 따라서 인덱싱과 슬라이싱이 가능!!!
#튜플 자료형
() 소괄호를 이용하여 작성하고 리스트와는 다르게 한번 입력된 값 수정 불가능!!!
튜플을 사용하면 좋은 경우 중 하나는 서로 다른 성질의 데이터를 묶어서 관리해야 하는 경우
#사전 자료형
사전 자료형은 Key 값과 Value 값의 데이터를 쌍으로 가지는 자료형
ex) “Apple” : “사과” (key : value)
keys() 함수를 이용하면 키 데이터만 뽑아 리스트로 이용가능
values() 함수를 이용하면 값 데이터만 뽑아 리스트로 이용가능
data = dict()
data['사과'] = 'apple'
data['바나나'] = 'banana'
key_list = list(data.keys())
value_list = list(data.values())
print(data)
print(key_list)
print(value_list)
for key in key_list:
print(data[key])
#결과 :
{'사과': 'apple', '바나나': 'banana'}
['사과', '바나나']
['apple', 'banana']
apple
banana
#문자열
print("영화 '신세계'에서 \\"드루와~\\"라는 대사가 유행했다.")
문자열에서 “” 안의 “” 처리는 \(백슬래시) “~~\” 를 이용합니다.
문자열에서 덧셈 연산을 이용하면 문자열이 연결됩니다.
문자열에서 곱셈 연산을 이용하면 그 값만큼 여러 번 더해집니다.