2021. 6. 30. 18:06ㆍpython/파이썬
numeric = int, float, complex(ex 3.14e1)
sequence = list, tuple
text sequence = str
mapping = {key:value}
set = {} = 순서 중복x
bool = T, F, and, or, not
시퀀스 데이터
# python의 Sequence Data Type
# list
a = list() # empty list를 생성하는 가장 일반적인 형태
a = [] # literal 표현은 대괄호( [] )
a = [1, 2, 3] # ','를 기준으로 요소들을 나열
a = [1, 3.14, 'Hello']
a = [1, 2, ['Hello', 4], 5, True] # 중첩리스트를 허용
# indexing : 숫자 index는 시작이 0부터 시작
print(a[2][1]) # 4
print(a[-2]) # 5
# slicing : 슬라이싱을 한 결과는 원본과 같은 데이터 타입
print(a[0:1]) # [1]
print(a[:2]) # [1, 2]
# 기본 연산
a = [1, 2, 3]
b = [4, 5, 6]
result = a + b # 연산자 overloading ( 연결의 의미로 변해요 )
print(result) # [1, 2, 3, 4, 5, 6]
result = a * 3 # a + a + a
print(result) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
a = [1, 2, 3]
# print(a[0] + 'Hello') # 1 + 'Hello' => '1' + 'Hello' => '1Hello'
# 자동형변환이 일어나지 않아요!
print(str(a[0]) + 'Hello') # 1Hello
a = [1, 2, 3]
# a.append(4) # append()는 리스트 마지막에 요소를 추가하는 함수
# # 함수는 2가지 형태로 사용이 되는데
# # 원본이 바뀌는 경우가 있고 결과값이 리턴되는 경우가 있어요!
# print(a) # [1, 2, 3, 4]
result = a.append(4)
print(result) # None
a = [1, 2, 3]
a.append([4, 5, 6]) # [1, 2, 3, [4, 5, 6]]
print(a)
a = [1, 2, 3]
a.extend([4, 5, 6]) # [1, 2, 3, 4, 5, 6]
print(a)
a = [3, 7, 10, 1, 2, 8, 4]
a.sort() # 맞는 형태
result = a.sort() # 의미없는 형태
print(a) # [1, 2, 3, 4, 7, 8, 10]
a.reverse()
print(a) # [10, 8, 7, 4, 3, 2, 1]
# python의 Sequence data type
# tuple
# list와 상당히 유사
# 여러가지 데이터를 순차적으로 저장하는 집합 자료형
# tuple은 read only
a = tuple()
# list는 대괄호 [], tuple은 소괄호 ()
a = () # 요소가 없는 tuple
a = (1, 2, 3)
# 원래 소괄호는 (1 + 3) * 4
a = (1,) # 요소가 1개인 tuple
print(type(a)) # <class 'tuple'>
a = 1, 2, 3 # tuple은 ()를 생략할 수 있어요!
print(type(a)) # <class 'tuple'>
a = (1, 2, (3, 4), [5, 6], 7)
# indexing, slicing 다 되요!
print(a[1]) # 2
# a[1] = 3 # 허용하지 않아요!!
a[3][0] = 100 # 가능
# a[3] = 100 # 안되요!! tuple의 요소는 변경이 불가능해요!\
a = (1, 2, 3)
b = 4, 5, 6
print(a + b)
a = [1, 2, 3]
b = tuple(a)
print(b) # (1, 2, 3)
a = (4, 5, 6)
result = list(a)
print(result) # [4, 5, 6]
# Sequence Data Type
# range
a = range(1,10,1) # 1부터 9까지 1씩 증가하는 range
# [1,2,3,4,5,6,7,8,9] => 메모리 공간을 요소들이 하나하나 차지
print(a)
a = range(10) # 초기값과 증감이 빠진 경우(초기값은 0, 증감은 1)
print(a)
print(a[1]) # 1
print(a[:3]) # range(0, 3)
a = range(3,100, 10)
print(a[1]) # 13
# 추가적인 연산자로 in 이 있어요!
# 특정 요소가 연속형 자료형 안에 포함이 되는지 되지 않는지를 판별
print(7 in range(10)) # True
print(range(1,20,3)[-1]) # 19
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
텍스트 시퀀스
# python - Text Sequence Data Type
# 우리가 흔희 문자열 이라고 부르는 것들을 Text Sequence Data Type
# 사용하는 class는 str class를 이용
# 다른 언어는(Java와 C++) 문자와 문자열을 구분
# 'a', "a"
# 'ab'(X) "ab"(O)
# python은 구분하지 않아요. => 문자라는 개념이 없어요. 모두 다 싹 다 문자열
# 표현할때는 '', "" 둘 다 사용이 가능
# 'Hello' , "Hello"
# list안에 각 요소가 문자로 구성된 거.
# 문자열 handling은 잘 해야 해요!!
a = 'Hello'
b = 'world'
print(a + b) # Helloworld
a = 'This is a Sample Text'
print(a[5]) # i
print(type(a)) # <class 'str'>
print(a[2:6]) # 'is i'
# 문자열은 문자열을 제어하기 위한 정말 많은 함수를 제공
print(a.upper()) # THIS IS A SAMPLE TEXT
print(a) # This is a Sample Text
apple = 10
banana = 8
text = '철수는 사과를 {}개 가지고 있고 영희는 바나나를 {}개 가지고 있어요'
print(text.format(apple, banana))
# 철수는 사과를 5개 가지고 있고 영희는 바나나를 7개 가지고 있어요
print('포도를 {}송이 주세요!'.format(100)) # 포도를 100송이 주세요!
a = 'cocacola'
print(len(a)) # 8
print(a.index('a')) # 3
a = 'this is a sample text'
result = a.split() # 문자열을 공백으로 분할해서 각각 리스트에 넣어서 리턴
print(result) # ['this', 'is', 'a', 'sample', 'text']
a = 'a,b,c,d,e'
result = a.split(',') # 문자열을 특정기준으로 분할해서 각각 리스트에 넣어서 리턴
print(result) # ['a', 'b', 'c', 'd', 'e']
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
mapping
# python data type - Mapping data type
# 사용되는 클래스 - dict class
# dictionary는 key와 value의 쌍으로 데이터를 저장
# 데이터 저장에 대한 순서가 존재하지 않아요!
# 어떻게 표현하나요?
# 중괄호를 이용해요 : {}
a = { 'name' : '홍길동', '주소' : '서울', '나이' : 30 }
print(type(a)) # <class 'dict'>
print(a['나이']) # 30
a['나이'] = 50
print(a['나이']) # 50
a['취미'] = '기타'
print(a) # {'name': '홍길동', '주소': '서울', '나이': 50, '취미': '기타'}
a = { 'name' : '홍길동', '주소' : '서울', '나이' : 30 }
print(a)
# 키값은 반드시 수정이 안되는 값으로 사용되어야 해요!
# 키값에 list는 사용할 수 없어요! tuple은 키값으로 사용할 수 있어요
# 일반적으로 문자열을 키값으로 이용합니다.
a = { (10,20) : 'Hello' }
# ===============
# dictionary와 관련된 함수 3개
# keys()
a = { 'name' : '홍길동', '주소' : '서울', '나이' : 30 }
print(a.keys()) # dict_keys(['name', '주소', '나이'])
# ['name', '주소', '나이']
print(a.values()) # dict_values(['홍길동', '서울', 30])
print(a.items()) # dict_items([('name', '홍길동'), ('주소', '서울'), ('나이', 30)])
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
set
# python data type - Set Type
# 사용되는 class : set
# 주머니처럼 생각하면 되요!
# key와 value의 개념이 없어요. 데이터(value)만 저장
# 순서가 없어요. 중복해서 저장이 안되요!
# 어떻게 생겼나요 : {}
a = {1, 2, 3}
print(type(a)) # <class 'set'>
a = [1, 2, 1, 2, 3, 3, 5]
result = set(a)
print(result) # {1, 2, 3, 5}
# set의 연산
# 집합연산(합집합, 교집합, 차집합)
a = set([1,8,3,4])
b = set([3,4,5,6])
print(a | b) # {1, 2, 3, 4, 5, 6} 합집합(union)
print(a & b) # {3, 4} 교집합(intersection)
print(a - b) # {1, 2} 차집합(difference)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
bool
# python data type - Bool Type
# True, False
# 연산자는 and, or, not
a = True
b = False
print(a)
print(a and b) # and 연산은 피 연산자 2개가 둘 다 True 인 경우만 결과값이 True
print(a or b) # and 연산은 피 연산자 2개가 둘 다 False 인 경우만 결과값이 False
print(not a)
# 다음의 경우는 False로 간주
# 빈 문자열( '', "" )은 논리값으로 False로 간주
# 빈 리스트( [] )는 논리값으로 False 간주
# 빈 tuple( () )는 논리값으로 False 간주
# 빈 dictionary( {} )는 논리값으로 False 간주
# 숫자 0은 False간주 (0 이외의 다른 숫자는 True)
# None도 False로 간주
###########################
## python의 built-in data type
## 날짜연산에 사용되는 data class는 나중에 나올때 다시 소개
## 출력할때 print()
## print()는 인자로 들어오는 데이터를 문자열로 변환해서 출력하는 함수
a = 100
print(a) # 기본적인 print함수는 출력후 line feed(한줄을 띄어요)해요!
print('Hello')
print('Hello', end=' ')
print('World')
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
if 문과 for 문
## python의 control statement (제어문)
## block을 표현하기 위해서 {}를 사용하지 않아요!
## 대신 indentation(들여쓰기-space기준 4칸)을 이용해요
# 조건문과 반복문
# 조건문의 형태
a = 40
# if a > 50:
# print('a는 50보다 커요!')
# print('호호호')
# else:
# print('a는 50보다 작아요!')
# print('하하하')
if a > 50:
print('a는 50보다 커요!')
elif a > 30:
print('a는 30보다 커요!')
else:
print('a는 30보다 작아요!')
for문
# for (반복문)
# for문은 반복하는 횟수를 알고 있거나 정해져있을때
# while은 조건에 따라서 반복을 결정할때
# myList = [1,2,3,4,5]
# for tmp in myList:
# print(tmp)
for tmp in range(10):
print(tmp)
## 문제 1.
## 10보다 작은 자연수 중에서 3 또는 5의 배수는
## 3,5,6,9가 존재해요! 이것들의 합은 23입니다.
## 1000보다 작은 자연수 중에서 3 또는 5의 배수들을
## 구해서 모두 합하면 얼마인가요?
## 문제 2.
## 피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다.
## 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.
## 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
## 짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?
## 문제 3.
## 알파벳 대소문자로 된 문자열이 주어지면,
## 이 문자열에서 가장 많이 사용된 알파벳이
## 무엇인지 출력하는 프로그램을 작성하시오.
## 단, 대소문자는 구별하지 않아요. 만약 동률이 존재하는 경우
## 알파벳 순으로 제일 앞에 있는
## 문자를 출력하세요.
## 문자열) "This is a sample Program mississippi river"
## 문자열) "abcdabcdababccddcd"
'python > 파이썬' 카테고리의 다른 글
반복문, 함수,람다 (0) | 2021.07.01 |
---|---|
파이썬 함수 모음 (0) | 2021.07.01 |
파이썬 특징, 시퀀스, 슬라이스 (0) | 2021.06.29 |
6.함수와 매서드 (0) | 2021.05.11 |
5.문자열/리스트 활용, 튜플, Dictionary (0) | 2021.05.11 |