728x90
반응형

SGD (Stochastic Gradient Descent)

Laplace Mechanism
Gaussian Mechanism
Exponential Mechanism
Local Sensitivity Sampling (LSS)
Multiplicative Weights Exponential Mechanism (MWEM)
High-Dimensional Matrix Mechanism (HDMM)
Multiplicative Weights Update (MWU)
Projected Gradient Descent (PGD)
PrivBayes
DualQuery

 

1. 경사 하강법(Stochastic Gradient Descent, SGD)

장점
연속적인 최적화: SGD는 연속적인 최적화를 통해 합성 데이터를 생성할 수 있어, 쿼리 결과에 대한 차이가 최소화된다.
확장성: 대규모 데이터셋에서도 효과적으로 작동한다.

유연성: 다양한 데이터셋과 쿼리 유형에 적용할 수 있다.
단점
수렴 문제: 학습률(lr)과 같은 하이퍼파라미터에 민감하며, 잘못 설정된 경우 수렴하지 않을 수 있다.
비선형 관계: 데이터의 비선형 관계를 다루는 데 한계가 있을 수 있다.

2. Multiplicative Weights Update (MWU) Mechanism

MWU 메커니즘은 적응적으로 쿼리를 선택하고, 각 쿼리의 응답을 업데이트하는 방법이다. 이 방법은 데이터의 각 레코드에 가중치를 할당하고, 각 쿼리 응답에 따라 가중치를 업데이트한다.
장점
적응적 쿼리 선택: 가장 정보가 많은 쿼리를 선택하여 효율성을 높인다.
프라이버시 보호: 프라이버시 예산을 효율적으로 사용한다.
단점
복잡성: 구현이 복잡하고, 계산 비용이 높을 수 있다.
적용 범위 제한: 일부 특정 쿼리 유형에만 효과적일 수 있다.

3. High-Dimensional Matrix Mechanism (HDMM)

HDMM은 고차원 데이터에 대해 최적화된 방식으로 쿼리를 처리하는 메커니즘이다. 쿼리 집합에 대한 응답을 선형 결합으로 표현하고, 이를 통해 최적의 노이즈 추가 방법을 찾아낸다.
장점
고차원 데이터 처리: 고차원 데이터셋에 대해 효과적으로 작동한다.
최적화된 노이즈 추가: 노이즈 추가를 최적화하여 정확도를 높인다.
단점
계산 복잡성: 계산 비용이 높아 대규모 데이터셋에 적용하기 어려울 수 있다.
제한된 쿼리 유형: 일부 쿼리 유형에 제한적일 수 있다.

4. Projected Gradient Descent (PGD)

PGD는 경사 하강법을 사용하는 투영 메커니즘 중 하나로, 최적화 과정에서 정규화 제약 조건을 적용한다. 이는 주어진 제약 조건 내에서 최적의 해를 찾는 데 효과적이다.
장점
정확도: 제약 조건 내에서 최적화하므로, 정확한 결과를 얻을 수 있다.
제약 조건 적용: 다양한 제약 조건을 쉽게 적용할 수 있다.
단점
수렴 문제: 학습률과 같은 하이퍼파라미터에 민감하며, 잘못 설정된 경우 수렴하지 않을 수 있다.
복잡성: 구현이 복잡할 수 있다.

 

5. Local Sensitivity Sampling (LSS)

주요 개념

국소 민감도 (Local Sensitivity): 특정 데이터셋에서 특정 쿼리에 대한 민감도를 계산한다. 이는 데이터셋의 특정 부분에서 쿼리 결과의 변동성을 측정한다.
노이즈 추가: 민감도에 따라 적절한 노이즈를 추가하여 프라이버시를 보호한다.
장점
효율적 노이즈 추가: 국소 민감도를 사용하여 보다 효율적으로 노이즈를 추가할 수 있다.
높은 정확도: 민감도에 맞춰 노이즈를 추가함으로써 데이터의 유용성을 유지한다.
단점
복잡성: 민감도를 계산하는 과정이 복잡할 수 있다.
특정 쿼리에 맞춤: 특정 쿼리에 대해 민감도를 계산하므로, 모든 유형의 쿼리에 적용하기 어려울 수 있다.

6. Private Gaussian Mechanism (PGM)

PGM은 Gaussian 노이즈를 추가하여 차등 프라이버시를 보장하는 메커니즘이다. Gaussian 노이즈는 데이터의 평균을 중심으로 정규 분포를 따르는 노이즈를 추가한다.
주요 개념
글로벌 민감도 (Global Sensitivity): 데이터셋 전체에서 특정 쿼리에 대한 민감도를 계산한다. 이는 데이터셋에서 최악의 경우에 쿼리 결과가 얼마나 변할 수 있는지를 측정한다.
Gaussian 노이즈: 정규 분포를 따르는 노이즈를 추가하여 프라이버시를 보호한다.
장점
프라이버시 강화: Gaussian 노이즈를 사용하여 데이터의 민감한 정보를 효과적으로 보호할 수 있다.
적용 범위: 다양한 유형의 데이터셋과 쿼리에 적용할 수 있다.
단점
노이즈 크기: 글로벌 민감도를 기준으로 노이즈를 추가하므로, 데이터셋의 크기와 민감도에 따라 노이즈가 커질 수 있다.
데이터 유용성: 노이즈가 커질수록 데이터의 유용성이 떨어질 수 있다.

 

7. PrivBayes

PrivBayes는 차등 프라이버시를 보장하는 베이지안 네트워크 기반의 합성 데이터 생성 기법이다. 원본 데이터의 분포를 학습하고, 그 분포를 기반으로 합성 데이터를 생성한다.
장점
정확한 데이터 생성: 원본 데이터의 통계적 특성을 잘 반영한 합성 데이터를 생성할 수 있다.
유용성: 다양한 데이터 분석 및 머신러닝 모델 학습에 사용할 수 있다.
단점
복잡성: 베이지안 네트워크 학습과 파라미터 추정 과정이 복잡하고 계산 비용이 높을 수 있다.
스케일링 문제: 매우 큰 데이터셋에 적용하기 어려울 수 있다.

8. DualQuery

DualQuery는 차등 프라이버시를 보장하는 데이터 쿼리 응답 기법이다. 이 방법은 데이터의 중요한 통계적 쿼리에 대한 정확한 응답을 제공하기 위해 노이즈를 적응적으로 조절한다.

장점
높은 정확도: 적응적 노이즈 조절을 통해 정확한 쿼리 응답을 제공할 수 있다.
적응성: 중요도가 높은 쿼리에 더 적합한 노이즈 수준을 선택할 수 있다.
단점
복잡성: 적응적 노이즈 조절 및 쿼리 선택 과정이 복잡하고 계산 비용이 높을 수 있다.
제한된 쿼리 응답: 특정 유형의 쿼리에 대해서만 적용할 수 있다.

9. MWEM (Multiplicative Weights Exponential Mechanism)

MWEM은 차등 프라이버시를 보장하면서 데이터의 분포를 추정하기 위한 기법이다. 이 방법은 데이터의 가중치를 반복적으로 업데이트하여 실제 데이터 분포에 가까운 분포를 생성한다.

주요 개념
Multiplicative Weights: 데이터의 각 레코드에 가중치를 할당하고, 반복적으로 업데이트한다.
Exponential Mechanism: 쿼리 응답에 노이즈를 추가하여 차등 프라이버시를 보장한다.
장점
정확한 분포 추정: 반복적인 업데이트를 통해 실제 데이터 분포에 가까운 분포를 생성할 수 있다.
적응성: 다양한 쿼리 유형에 대해 적용할 수 있다.
단점
계산 비용: 반복적인 가중치 업데이트 과정이 복잡하고 계산 비용이 높을 수 있다.
수렴 문제: 반복 과정에서 수렴하지 않을 위험이 있다.

 

상황별추천

대규모 데이터셋:

SGD: 확장성이 좋고, 대규모 데이터셋에서 효과적으로 작동한다.
PGD: 제약 조건이 있는 최적화 문제에 효과적이다.

고차원 데이터셋:

HDMM: 고차원 데이터에 최적화된 방식으로 쿼리를 처리한다.

적응적 쿼리 응답:

MWU: 적응적 노이즈 조절로 높은 정확도를 유지할 수 있다.
DualQuery: 중요한 쿼리에 대한 높은 정확도를 유지할 수 있다.

프라이버시 보호와 데이터 유용성:

MWEM: 반복적인 업데이트를 통한 정확한 분포 추정이 가능한다.
PrivBayes: 원본 데이터의 통계적 특성을 잘 반영한 합성 데이터를 생성할 수 있다.

복잡한 조건부 의존성 처리:

PrivBayes: 베이지안 네트워크를 사용하여 복잡한 조건부 의존성을 처리할 수 있다.

 

PrivBayes: 원본 데이터의 통계적 특성을 잘 반영한 합성 데이터를 생성할 수 있지만, 계산 비용이 높다.
DualQuery: 적응적 노이즈 조절을 통해 높은 정확도의 쿼리 응답을 제공하지만, 구현이 복잡할 수 있다.
MWEM: 다양한 쿼리 유형에 적용할 수 있으며, 반복적인 업데이트를 통해 정확한 분포를 추정할 수 있지만, 계산 비용이 높을 수 있다.

상위호환 관계

1. SGD < PGD

제약 조건을 추가하여 최적화 문제를 해결할 수 있다.

- PGD: 제약 조건을 적용한 경사 하강법, 데이터의 특정 조건을 만족해야 하는 최적화 문제에 적합하다.

2. Laplace < Gaussian Mechanism

고차원 데이터에 적합, 델타 파라미터 사용하여 노이즈를 추가한다.

3. MWU < MWEM

쿼리 응답과 데이터 분포 추정에 대해 더 복잡하고 정밀한 업데이트를 수행한다.

4. LSS < PGM

국소 민감도를 사용하여 노이즈 추가하는 방식에서, 글로벌 민감도를 기반으로 Gaussian 노이즈를 추가한다.

 


High-Dimensional Matrix Mechanism (HDMM)
PrivBayes
DualQuery

 

 

728x90
728x90
728x90
반응형

1. 원핫 인코딩 (One-Hot Encoding)

설명: 각 범주를 이진 벡터로 변환한다. 각 벡터는 하나의 1과 나머지 0으로 구성된다.
장점: 단순하고 직관적, 범주 간 순서나 크기를 가정하지 않음
단점: 차원이 높아질 수 있음, 범주가 많을 경우 메모리 사용량이 증가함
적합성: 많은 노이즈를 추가해야 하는 경우가 많아질 수 있으며, 고차원 데이터는 계산 복잡도를 증가시킬 수 있다.

2. 레이블 인코딩 (Label Encoding)

설명: 각 범주를 고유한 정수로 매핑한다.
장점: 단순하고 메모리 효율적, 차원이 증가하지 않음
단점: 범주 간 순서나 크기를 가정하게 되어 모델이 이를 잘못 해석할 수 있음
적합성: 범주 간의 순서나 크기 정보가 노출될 수 있어 적합하지 않을 수 있다.

3. 순서 인코딩 (Ordinal Encoding)

설명: 범주형 데이터를 순서가 있는 정수로 변환한다.
장점: 순서가 있는 데이터를 잘 표현할 수 있음, 메모리 효율적
단점: 범주 간의 거리를 동일하게 가정, 범주 간 순서가 중요하지 않은 경우 부적절할 수 있음
적합성: 순서가 중요한 경우 유용하지만, 범주 간 순서 정보가 노출될 수 있어 적합하지 않을 수 있다.

4. 바이너리 인코딩 (Binary Encoding)

설명: 각 범주를 고유한 숫자로 매핑하고, 이 숫자를 이진수로 변환한다.
장점: 차원이 원핫 인코딩보다 낮음, 원핫 인코딩과 레이블 인코딩의 중간 정도의 복잡도와 메모리 사용량을 가짐
단점: 복잡도가 증가할 수 있음, 일부 정보가 손실될 수 있음
적합성: 차원이 적당히 낮고, 범주 간의 순서 정보가 직접적으로 노출되지 않아 적합하다.

 

바이너리 인코딩은, 
차원 감소: 원핫 인코딩보다 낮은 차원을 가지므로 계산 복잡도가 줄어든다.
정보 노출 최소화: 범주 간의 순서나 크기 정보가 직접적으로 노출되지 않는다.
프라이버시 보호: 적당한 수준의 노이즈를 추가하여 프라이버시를 보호할 수 있다.

 

728x90
728x90
728x90
반응형
목차
1. 객체지향 프로그래밍
2. 클래스와 인스턴스

  1) 클래스 정의
  2) 클래스 생성
  3) 필드(field)
  4) 메서드(method)
  5) self: 메서드가 가져야 할 첫 번째 매개변수
  6) 인스턴스(instance)
  7) 인스턴스의 필드와 메서드
3. 왜 객체지향 프로그래밍인가?
  1) 상속
  2) 다형성
4. 이후 학습이 필요한 내용

[Review] (7주차) 모듈과 패키지

2023.01.21 - [Development/Python] - [Python] 03 모듈과 패키지 - week.07

 

[Python] 03 모듈과 패키지 - week.07

목차 1. 모듈 - 변수와 함수, 코드를 모아둔 하나의 .py파일 1) 모듈 불러오기 - import ① math: 수학 연산 ② random: 랜덤한 숫자를 선택 2) 모듈 사용하기 - . + 모듈 속 함수/변수 3) 모듈 만들기 - .py 확

sarahee.tistory.com


1. 객체지향 프로그래밍

Point I
프로그래밍 방식의 전환! 프로그램이 객체와 객체의 상호작용이라면?

Point II
객체(Object) : 성질과 할 수 있는 행동이 담긴 자료


2. 클래스와 인스턴스

Point I
클래스(Class) : 객체를 만들 수 있는 

에어컨이 가져야 할 속성 : 희망온도, 바람속도, ...
에어컨이 할 수 있는 행동 : 온도 높이기/낮추기, 바람속도 조절, ...

Point II
클래스 생성 : class 클래스이름:으로 생성

class Aircon: 
#Aircon 클래스를 생성

Point III
필드(field) : 객체가 가지고있는 성질 → 변수

class Aircon:
    temp = 20 #희망온도 변수
    wind_speed = 1 #바람속도 변수

Point IV
메서드(method) : 객체가 할 수 있는 행동 → 함수

class Aircon:
    def wind_speed_up(self): #바람속도를 증가시키는 함수
        self.wind_speed = self.wind_speed + 1

Point V
self: 메서드라면 가져야하는 첫 번째 매개변수
Q : 왜 self가 필요할까?
A : self는 객체 자신을 의미하며, 메서드가 호출될 때 self 자리에 객체 자신을 인자에 넣음

Point VI
인스턴스(Instance) : 객체를 만드는 틀(클래스)로 만든 객체

Point VII
인스턴스의 생성 : 인스턴스 이름 = 클래스 이름()

crystal = Aircon() 
#Aircon의 성질을 가진 객체 crystal 생성

Point VIII
인스턴스의 필드와 메서드 : 인스턴스.field/method 형태로 사용

crystal = Aircon()
print(crystal.temp) #20
print(crystal.wind_speed) #1

crystal.wind_speed_up() #메서드 호출
print(crystal.wind_speed) #2

3. 왜 객체지향 프로그래밍인가?

Point I
기존의 코딩스타일로는 표현할 수 없었던 상황을 표현 가능하게 해줌

Point II
상속 : 한 클래스의 속성을 다른 클래스가 이어받는 것

class Tree:
    height = 0
    leaf_size = 0
...

class CherryBlossom(Tree): #Tree의 성질을 그대로 계승
    height = 25 # 벚꽂나무에 맞게 값을 재조정
    leaf_size = 1

# 마치 부모와 자식처럼 코드를 관리 가능
# 현실 세계의 객체 구조와 유사

Point III
다형성 : 같은 이름의 코드가 다양한 역할을 하는 것

class CherryBlossom(Tree):
    height = 25
    leaf_size = 1

class Mugunghwa(Tree):
    height = 1
    leaf_size = 5

# 같은 height, leaf_size 변수가 있지만
# class마다 가지는 값이 다름
# 같은 이름으로 각 객체의 값을 관리할 수 있음

4. 이후 학습이 필요한 내용

  • 데이터를 효과적으로 담는 방법인 데이터구조나, 문제를 효율적으로 해결할 수 있는 알고리즘
  • 데이터분석을 진행하기 위한 기초인 Numpy/Pandas
  • 웹사이트의 내용을 정보를 가져오는 데이터 크롤링
  • 문자열에서 유의미한 정보를 추출하는 정규 표현식

 

728x90
728x90
728x90
반응형
목차
1. 모듈
  - 변수와 함수, 코드를 모아둔 하나의 .py파일
  1) 모듈 불러오기
    - import
    ① math: 수학 연산
    ② random: 랜덤한 숫자를 선택
  2) 모듈 사용하기
    - . + 모듈 속 함수/변수
  3) 모듈 만들기
    - .py 확장자
2. 패키지
  - 모듈을 폴더 단위로 관리하는 것
  - from A import func: 불러올 장소(A) 와 불러올 변수/함수(func)를 명시한 것
  - 폴더(디렉토리)와 모듈로 구성되는 세트

[Review] (6주차) 함수와 메서드

2022.11.08 - [Development/Python] - [Python] 02 함수와 메서드 - week.06

 

[Python] 02 함수와 메서드 - week.06

목차 1. 함수 1) 내장 함수 ① max(), min() ② sum(), len() ③ def 2) 매개변수 3) 전역변수 4) 지역변수 2. 메서드 [Review] (5주차) 기초 자료형2 2022.09.05 - [Development/Python] - [Python] 01 기초 자료형 II - week.05 [Pyt

sarahee.tistory.com


1. 모듈

Point I
특정 목적을 가진 함수, 자료, 코드의 모임

Point II
모듈 불러오기 - import 키워드를 이용해서 모듈을 사용

import random
#random 모듈을 불러옴

Point III
모듈 사용하기 - .을 쓴 후에 모듈 속 함수/변수를 사용

import random

print(random.randrange(0, 2))
#0 이상 2 미만 수 중 하나를 임의로 출력

Point IV
모듈 만들기 - .py확장자의 파이썬 파일로 생성

## price.py
americano = 4100
cafe_latte = 4600
...

## main.py
import price
print(price.americano)
# 4100

Point V
모듈 예시 I - math수학 연산을 도와주는 모듈

math.cos는 삼각함수 코사인 연산을 하는 함수

import math

print(math.cos(0))
# cos(0)인 1.0을 출력

Point VI
모듈 예시 II - random랜덤한 숫자를 선택하는 함수가 담긴 모듈

import random

print(random.randrange(1, 10))
# 1~9 중 하나를 랜덤으로 출력

2. 패키지

Point I
모듈을 폴더(디렉토리) 단위로 관리하는 것

Point II
import vs from-import
import A : 불러올 장소(A)만을 명시한 것

import A
A.func()

# A 안의 함수 func를 사용하기 위해선 A.func() 꼴로 사용

from A import func : 불러올 장소(A)와 불러올 변수/함수(func)를 명시한 것

from A import func
func()

# A 안의 함수 func을 사용하기 위해선 func() 꼴로 사용  

Point III
모듈 vs 패키지
모듈 : 변수와 함수, 코드를 모아둔 하나의 .py파일
패키지 : 폴더(디렉토리)와 모듈로 구성되는 세트

# [예시] 파이썬으로 게임 패키지를 만든다면?
game/ #폴더
    __init__.py 
    audio/
    sprite/
    script/
        __init__.py
        move.py #모듈
        attack.py
    ...

[Next] (8주차) 객체의 세계로

2023.01.21 - [Development/Python] - [Python] 04 객체의 세계로 - week.08

 

[Python] 04 객체의 세계로 - week.08

목차 1. 객체지향 프로그래밍 2. 클래스와 인스턴스 1) 클래스 정의 2) 클래스 생성 3) 필드(field) 4) 메서드(method) 5) self: 메서드가 가져야 할 첫 번째 매개변수 6) 인스턴스(instance) 7) 인스턴스의 필

sarahee.tistory.com

 

728x90
728x90
728x90
반응형
목차
1. 함수
  1) 내장 함수
    ① max(), min()
    ② sum(), len()
    ③ def
  2) 매개변수
  3) 전역변수
  4) 지역변수
2. 메서드

[Review] (5주차) 기초 자료형2

2022.09.05 - [Development/Python] - [Python] 01 기초 자료형 II - week.05

 

[Python] 01 기초 자료형 II - week.05

목차 1. 시퀀스 활용 1) pop() 2) count() 3) split() 4) join() 2. Tuple(튜플) 3. Dictionary(사전형) 1) range() 2) for-range(a, b) 3) for-range(a) 4. while 1) 변수 수정 2) break문 [Review] (4주차) 반복문 2022.08.08 - [Development/Python]

sarahee.tistory.com


1. 함수

Point I
특정 기능을 수행하는 코드(들의 모임)

함수이름(인자) 형태로 사용

Point II
내장 함수형식에 맞춰서 편리하게 사용

Point III
max(), min() - 시퀀스의 최댓값최솟값을 구하는 함수

print(max([1, 2, 3]))
#3

print(min([-1, -2, -3]))
#-3

Point IV
sum(), len()- 시퀀스의 과 길이를 구하는 함수

odds = [1, 3, 5, 7, 9, 11]
print(sum(odds))
#36

print(len(odds))
#6

Point V
def 키워드 : 함수를 정의할 때 사용

def function_name():
    ....

Point VI
매개변수 : 함수 외부에서 내부로 값을 전달할 때 사용되는 변수
함수를 정의할 때 괄호 안에 써주는 것

def function(var1, var2, ...):
    ...

Point VII
인자 : 함수 외부에서 내부로 전달한 값(자료)
함수를 사용할 때 괄호 안에 써주는 것

def function(var1, var2):
    #이때 var1, var2는 매개변수
        ...

function(1, 2)
#이때 1, 2은 인자

Point VIII
전역변수 : 어디서든지 사용 가능한 변수
지역변수 : 특정 구문 안에서 정의한 변수

x = 1 #전역변수
def func():
    x = 2 #지역변수
    print(x)

Tip
print() 함수의 형식

print(data, end="\n", sep=" ")

data에는 출력할 자료를, end에는 data 출력 이후 출력할 문자열 삽입 (기본값은 줄바꿈 문자 "\n")

sep에는 data가 여러개인 경우, 각 data 사이에 출력할 문자열 삽입 (기본값은 공백 한 칸에 " ")

이때, end와 sep은 "end=", "sep="형식으로 인자를 전달해야 함

 

예시

print(1, 2, 3, end="")
print(4, 5, 6, sep="")

## 실행 결과 ##
1 2 3456

2. 메서드

Point I
특정 자료에 대해 특정 기능을 하는 코드
특정 자료.메서드이름(인자) 형태로 사용

Point II
함수 vs 메서드
함수 : 특정 기능을 하는 코드 (자료에 독립)
메서드 : 특정 자료에 대해 특정 기능을 하는 코드 (자료에 종속)

odd = [7, 2, 3, 5]

# 함수
max(odd)
print(odd)

# 메서드
odd.append(11)
odd.sort()

[Next] (7주차) 모듈과 패키지

2023.01.21 - [Development/Python] - [Python] 03 모듈과 패키지 - week.07

 

[Python] 03 모듈과 패키지 - week.07

목차 1. 모듈 - 변수와 함수, 코드를 모아둔 하나의 .py파일 1) 모듈 불러오기 - import ① math: 수학 연산 ② random: 랜덤한 숫자를 선택 2) 모듈 사용하기 - . + 모듈 속 함수/변수 3) 모듈 만들기 - .py 확

sarahee.tistory.com

 

728x90
728x90
728x90
반응형
목차
1. 시퀀스 활용
  1) pop()
  2) count()
  3) split()
  4) join()
2. Tuple(튜플)
3. Dictionary(사전형)
  1) range()
  2) for-range(a, b)
  3) for-range(a)
4. while
  1) 변수 수정
  2) break문

[Review] (4주차) 반복문

2022.08.08 - [Development/Python] - [Python] 04 반복문 - week.04

 

[Python] 04 반복문 - week.04

목차 1. 반복문 2. for-sequence문 3. for-range()문 1) range() 2) for-range(a, b) 3) for-range(a) 4. while 1) 변수 수정 2) break문 [Review] (3주차) 리스트 2022.07.28 - [Development/Python] - [Python]..

sarahee.tistory.com


1. 시퀀스 활용

Point I
list.pop(i) : 인덱스 i의 원소를 제거 후 반환

lst = [1, 2, 3, 4, 5]
box = lst.pop(0) # lst에서 1을 제거 후 반환, 이 경우에는 변수 box에 대입
print(lst) 
# [2, 3, 4, 5]

print(box)
# 1 

Point II
seq.count(d) : 시퀀스 내부의 자료 d의 개수를 반환

carrot = "Hi Rabbit!"
print(carrot.count("i"))

## 실행 결과 ##
2

Point III
str.split(c) : 문자열 c를 기준으로 문자열 str을 쪼개서 리스트를 반환

ours = "나,너,우리"
print(ours.split(","))
# ['나', '너', '우리']

Point IV
str.join(list) : str을 기준으로 list를 합쳐서 문자열을 반환

coffee = ['a', 'm', 'e', 'r', 'i', 'c', 'a', 'n', 'o']
print("".join(coffee)) # 빈 문자열("")을 기준으로 합치기
# americano

2. Tuple(튜플)

Point I
여러 자료를 담을 수 있으면서, 변하지 않는 자료형

Point II
() - 소괄호로 묶어 표현

tup = (1, 2, 3, 4, 5)

Point III
원소가 하나라면 반드시 원소 뒤에 ,을 적어주어야함

tup_one = (1,)

Point IV
시퀀스 자료형의 성질을 지님

cute = ('c', 'a', 't')
print(cute[1])  #인덱싱
#'a'

print(cute[1:]) #슬라이싱
#('a', 't')

print('e' in cute) #in연산자
#False

print(len(cute)) #len연산자
#3

print(cute + ('e', 'g', 'o', 'r', 'y')) #연결연산
#('c', 'a', 't', 'e', 'g', 'o', 'r', 'y')

print(cute * 3) #반복연산
#('c', 'a', 't', 'c', 'a', 't', 'c', 'a', 't')

Point V
자료를 추가, 삭제, 변경할 수 없음

hero = ("ant", "man")
hero.append("wasp") #Error
hero.remove("man") #Error
hero[0] = "iron" #Error

3. Dictionary(사전형)

Point I
짝꿍(Key → Value)이 있는 자료형

Point II
{} - 중괄호로 묶어서 표현

hp = {"gildong" : "010-1234-5678"}

Point III
key를 알면 value를 알 수 있음

dic = {"apple":"사과", "banana":"바나나"}
print(dic["apple"])
# 사과

Point IV
del 키워드로 Dictionary의 원소 삭제
리스트의 원소를 삭제하는 것도 가능

dic = {"apple":"사과", "banana":"바나나"}
del dic["apple"]
print(dic)
# {"banana":"바나나"}

Point V
Key는 변할 수 없는 자료형이여야 함

dic = {[1, 3, 5]:"odd"} #Error
dic = {(2, 4, 6):"even"} 

[Next] (6주차) 함수와 메서드

2022.11.08 - [Development/Python] - [Python] 02 함수와 메서드 - week.06

 

[Python] 02 함수와 메서드 - week.06

목차 1. 함수 1) 내장 함수 ① max(), min() ② sum(), len() ③ def 2) 매개변수 3) 전역변수 4) 지역변수 2. 메서드 [Review] (5주차) 기초 자료형2 2022.09.05 - [Development/Python] - [Python] 01 기초 자료형 II - week.05 [Pyt

sarahee.tistory.com

 

728x90
728x90

'Development > Python' 카테고리의 다른 글

[Python] 03 모듈과 패키지 - week.07  (0) 2023.01.21
[Python] 02 함수와 메서드 - week.06  (0) 2022.11.08
[Python] 04 반복문 - week.04  (0) 2022.08.08
[Python] 03 리스트 - week.03  (0) 2022.07.28
[Python] 02 조건문 - week.02  (0) 2022.07.22
728x90
반응형
목차
1. 반복문
2. for-sequence문
3. for-range()문
  1) range()
  2) for-range(a, b)
  3) for-range(a)
4. while
  1) 변수 수정
  2) break문

[Review] (3주차) 리스트

2022.07.28 - [Development/Python] - [Python] 03 리스트 - week.03

 

[Python] 03 리스트 - week.03

목차 1. 리스트 활용 1) append(d) 2) insert(i, d) 3) remove(d) 4) sort() 2. 시퀀스 자료형 1) 인덱싱, 슬라이싱 2) in: 멤버 조회 3) len: 길이 확인 4) 연결(+), 반복(*) [Review] (2주차) 조건문 2022.07.22..

sarahee.tistory.com


1. 반복문

어떠한 조건이나 범위 내에서 어떠한 명령을 반복적으로 수행하는 것


2. for-sequence문

Point I
원소로 반복하는 방법
시퀀스의 원소를 하나씩 변수에 넣어가면서 명령 실행

nums = [1, 2, 3, 4, 5]
for i in nums:
    print(2*i)
        
## 실행 결과 ##
2
4
6
8
10

3. for - range()문

Point I
range() : 숫자 시퀀스를 만들어주는 함수

  • range(a, b) : a 이상 b 미만의 숫자 시퀀스를 만들어 줌
  • range(a) : 0이상 a미만의 숫자 시퀀스를 만들어줌

Point II
for-range(a, b)범위로 반복 (a 이상 b 미만)

#1 이상 11 미만의 범위 반복
for i in range(1, 11): 
    print(i)
    
## 실행 결과 ##
1
2
...
9
10

Point III
for-range(a) : 횟수로 반복 (a번)

#5회 반복
for i in range(5): 
    print("안녕!")
        
## 실행 결과 ##
안녕!
안녕!
안녕!
안녕!
안녕!

4. while

Point I
while 조건 : 조건이 True(참)인 동안 명령 실행

num = []
i = 0
while len(num) < 5:
    num.append(i)
    i = i+1
print(num)

## 실행 결과 ##
[0, 1, 2, 3, 4]

Point II
조건이 True일 동안 명령을 수행하므로, 반복이 끝나도록 코드를 작성해야 함
조건식에 들어가는 변수 수정, break문 사용 등이 있음

i = 0
while True: #break가 없다면 무한루프!
    print(i)
    if i >= 10:
        break #i가 10보다 커지면 탈출!
    i = i + 1

## 실행 결과 ##
0
1
2
...
9
10

[Next] (5주차) 기초 자료형2

2022.09.05 - [Development/Python] - [Python] 01 기초 자료형 II - week.05

 

[Python] 01 기초 자료형 II - week.05

목차 1. 시퀀스 활용 1) pop() 2) count() 3) split() 4) join() 2. Tuple(튜플) 3. Dictionary(사전형) 1) range() 2) for-range(a, b) 3) for-range(a) 4. while 1) 변수 수정 2) break문 [Review] (4주차) 반복..

sarahee.tistory.com

 

728x90
728x90
728x90
반응형
목차
1. 리스트 활용
  1) append(d)
  2) insert(i, d)
  3) remove(d)
  4) sort()
2. 시퀀스 자료형
  1) 인덱싱, 슬라이싱
  2) in: 멤버 조회
  3) len: 길이 확인
  4) 연결(+), 반복(*)

[Review] (2주차) 조건문

2022.07.22 - [Development/Python] - [Python] 02 조건문 - week.02

 

[Python] 02 조건문 - week.02

목차 1. 입력 1) 변수 2) 형 변환 2. 논리 자료형(Boolean Data) 1) 논리 자료형 2) 비교 연산자 3) 논리 연산자 3. 조건문 1) if문 2) elif문 3) else문 [Review] (1주차) 기초 자료형 2022.07.10 - [Dev/Python]..

sarahee.tistory.com


1. 리스트 활용

Point I
list.append(d) : 자료 d를 list의 마지막 원소 뒤에 추가

alphabet = ['A', 'B', 'C']
alphabet.append('D')
print(alphabet)

## 출력 결과 ##
['A', 'B', 'C', 'D']

Point II
list.insert(i, d) : 인덱스 i에 자료 d를 삽입

num_eng = ["one", "two", "four", "five"]
num_eng.insert(2, "three")
print(num_eng)

## 출력 결과 ##
["one", "two", "three", "four", "five"]

Point III
list.remove(d) : 인덱스 0부터 조회하여 처음 나오는 자료 d를 제거

ice_cream = ["Mother is Alien", "Mint Choco", "NY Cheese Cake", "Mint Choco"]
ice_cream.remove("Mint Choco")
print(ice_cream)

## 실행 결과 ##
["Mother is Alien", "NY Cheese Cake", "Mint Choco"]

Point IV
list.sort() : 리스트를 오름차순/사전순으로 정렬

digit = [0, 3, 6, 9, 1, 4, 7, 2, 5, 8]
digit.sort()
print(digit)

## 실행 결과 ##
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2. 시퀀스 자료형

Point I
순서가 있는 자료형 → 리스트, 문자열 등이 이에 속함

Point II
인덱싱, 슬라이싱이 가능

prime_num = [2, 3, 5, 7, 9, 11]
prime_num[0] 
# 2

prime_num[1:4] 
# [3, 5, 7]
...

Point III
멤버 조회 in

prime_num = [2, 3, 5, 7, 9, 11]
2 in prime_num  
#True

4 in prime_num  
#False

Point IV
길이 확인 len

word = "Antidisestablishmentarianism"
len(word)  
#28

Point V
연결(+)반복(*)

mouse = ["Mickey"]
mice = mouse + ["Minnie"]  
#["Mickey", "Minnie"]

disney = ["Mickey"]*3 
#["Mickey", "Mickey", "Mickey"]

[Next] (4주차) 반복문

2022.08.08 - [Development/Python] - [Python] 04 반복문 - week.04

 

[Python] 04 반복문 - week.04

목차 1. 반복문 2. for-sequence문 3. for-range()문 1) range() 2) for-range(a, b) 3) for-range(a) 4. while 1) 변수 수정 2) break문 [Review] (3주차) 리스트 2022.07.28 - [Development/Python] - [Python]..

sarahee.tistory.com

 

728x90
728x90
728x90
반응형
목차
1. 입력
  1) 변수
  2) 형 변환
2. 논리 자료형(Boolean Data)
  1) 논리 자료형
  2) 비교 연산자
  3) 논리 연산자
3. 조건문
  1) if문
  2) elif문
  3) else문

[Review] (1주차) 기초 자료형

2022.07.10 - [Dev/Python] - [Python] 01 기초 자료형 - week.01

 

[Python] 01 기초 자료형 - week.01

목차 1. print() 2. 기본 자료형: 숫자형, 문자열, 리스트 3. 변수 4. 연산: 사칙연산, 특수연산, 문자열 연산 5. 인덱싱과 슬라이싱 1. print() Point I print() : 문자열을 출력하는 명령어 print("Hello Rabbit..

sarahee.tistory.com


1. 입력

Point I
변수 = input() : 변수에 입력받은 값을 집어넣겠다는 의미

var = input()

Point II
어떤 것을 입력하든 문자열로 입력되기 때문에 형 변환이 필요
int() : 정수형 변환, str() : 문자열 변환 등…

var1 = input() #4 입력
var1 = int(var1)
var2 = int(input()) #3 입력
print(3+var1+var2) #10 출력

2. 논리 자료형(Boolean Data)

Point I
논리 자료형 : 참(True) 혹은 거짓(False)을 나타내는 자료형

True, False

Point II
비교 연산자 : 숫자나 문자의 값을 비교하는 연산자
주어진 진술이 참이면 True, 거짓이면 False

A == B #A와 B가 같다
A != B #A와 B가 다르다
A >= B #A가 B보다 크거나 같다
A <= B #A가 B보다 작거나 같다
A > B #A가 B보다 크다
A < B #A가 B보다 작다

print(3 == 3) #True
print(3 != 3) #False

Point III
논리 연산자 : 논리 자료형 사이의 연산

AND : 각 논리가 모두 True이면 결과가 True  
OR : 각 논리 중 True가 존재하면 결과가 True  
NOT : 논리값을 뒤집는 연산

3. 조건문

조건에 따라 특정 명령을 수행하는 구문

Point I
if문 : 조건이 참이면 명령을 수행

if a >= 5:
    print("a는 5 이상입니다!")

Point II
elif문 : 이전 조건이 거짓인 상황에서 조건이 참이면 명령을 수행

if a >= 5:
    print("a는 5 이상입니다!")
elif a >= 3:
    print("a는 3 이상 5 미만입니다!")

Point III
else문 : 위의 조건에 해당하지 않는 모든 경우에 수행

if a >= 5:
    print("a는 5 이상입니다!")
elif a >= 3:
    print("a는 3 이상 5 미만입니다!")
else:
    print("a는 3 미만입니다!")

Point IV
조건문에 들어가는 명령들은 같은 들여쓰기로 구분(Tab 사용)


[Next] (3주차) 리스트

2022.07.28 - [Development/Python] - [Python] 03 리스트 - week.03

 

[Python] 03 리스트 - week.03

목차 1. 리스트 활용 1) append(d) 2) insert(i, d) 3) remove(d) 4) sort() 2. 시퀀스 자료형 1) 인덱싱, 슬라이싱 2) in: 멤버 조회 3) len: 길이 확인 4) 연결(+), 반복(*) [Review] (2주차) 조건문 2022.07.22..

sarahee.tistory.com

 

728x90
728x90
728x90
반응형
목차
1. print()
2. 기본 자료형: 숫자형, 문자열, 리스트
3. 변수
4. 연산: 사칙연산, 특수연산, 문자열 연산
5. 인덱싱과 슬라이싱

1. print()

Point I
print() : 문자열을 출력하는 명령어

print("Hello Rabbit!")  

## 출력결과 ##
Hello Rabbit!

Point II
콤마(,)를 통해 여러 자료를 출력

print(3, "Hello")   

## 출력결과 ##
3 Hello

Point III
print()를 여러 번 사용하여 여러 줄에 걸쳐 출력

print(3)  
print(6)  
print(9)  

## 출력결과 ##
3
6
9

2. 기본 자료형

Point I
숫자형 : 숫자로 이루어진 자료형

3 : 정수  
3.14 : 실수  

Point II
문자열 : 문자, 혹은 문자들의 집합 - 큰따옴표(“)/작은따옴표(‘)로 구분

'Hello'  
'3.14'  
"3.14"  

Point III
리스트 : 여러 자료를 함께 보관하는 자료형 - 대괄호([])로 구분

[]  
['a', 'b']  
['a', 2]  

3. 변수

Point I
변수 : 자료를 담는 그릇
변수 이름 = 자료 형태로 사용

num = 10   
name = "Michael"   
grade = ['A+', 'B+', 'A0']  

Point II
변수 이름 짓기
숫자, 알파벳, 언더바(_) 등을 사용

Point III
금지 규칙

  • 숫자로 시작하는 변수이름 금지
1st = 1000 #Error
  • 숫자로만 구성된 변수 이름은 사용 불가
123 = "Hello!" #Error
  • 파이썬 문법에서 이미 사용되는 단어(keyword, 예약어)는 사용 불가
for = 10 #Error
  • 공백 문자( )와 연산자는 사용 불가
I am = "groot" #Error  
3+4 = 12 #Error

4. 연산

Point I
숫자의 사칙연산 : +(더하기), -(빼기), *(곱하기), /(나누기)

print(6+3) #9
print(6-3) #3
print(6*3) #18
print(6/3) #2.0

Point II
숫자의 특수연산 : **(제곱), //(몫 연산), %(나머지 연산)

print(6**3) #216
print(6//3) #2
print(6%3) #0

Point III
문자열의 연산: +(연결하기), *(반복하기)

print("Hello" + "World") #HelloWorld
print("Hello"*3) #HelloHelloHello

5. 인덱싱과 슬라이싱

Point I
인덱스 : 문자열과 리스트의 특정 원소의 위치, 0부터 시작

"Hello"에서 H = Index 0, e = index 1, ...

Point II
인덱싱 : 문자열과 리스트의 특정 위치(인덱스)의 원소를 가져오는 것

greet = "Hello!"  
print(greet[1])  

## 출력결과 ##
e

Point III
슬라이싱 : 문자열과 리스트의 특정 부분을 가져오는 것

greet = "Hello!"  
print(greet[0:5])  
Hello

[Next] (2주차) 조건문

2022.05.25 - [Dev/Python] - [Python] 02 조건문 - week.02

 

[Python] 02 조건문 - week.02

목차 1. 입력 1) 변수 2) 형 변환 2. 논리 자료형(Boolean Data) 1) 논리 자료형 2) 비교 연산자 3) 논리 연산자 3. 조건문 1) if문 2) elif문 3) else문 [Review] (1주차) 기초 자료형 2022.07.10 - [Dev/Python]..

sarahee.tistory.com

 

728x90
728x90

'Development > Python' 카테고리의 다른 글

[Python] 02 함수와 메서드 - week.06  (0) 2022.11.08
[Python] 01 기초 자료형 II - week.05  (0) 2022.09.05
[Python] 04 반복문 - week.04  (0) 2022.08.08
[Python] 03 리스트 - week.03  (0) 2022.07.28
[Python] 02 조건문 - week.02  (0) 2022.07.22

+ Recent posts