File rename 프로그램 제작

 목적

특정 폴더의 파일 이름을 일괄적으로 변경하기.
확장자를 입력하면 해당 확장자 파일을 모두 일련번호나 날짜가 붙은 파일로 변경함.
예를 들어,

dfsafdfa.png --> 0001.png
dagh2113.png --> 0002.png
kdkdkkdk.png ---> 0003.png

혹은

dfsafdfa.png --> 2021-01-23_0001.png
dagh2113.png --> 2021-01-23_0002.png
kdkdkkdk.png ---> 2021-01-23_0003.png

개발 노트

argparse 모듈을 써서 CLI(command line interpreter) 프로그램으로 작성함
progressbar 추가
pathlib으로 확장자 처리
glob으로 현재 경로에서 파일 리스트 추출
타입힌트 기능 사용


설치 및 사용

파이썬의 site-packages에 설치해 python -m 으로 사용합니다.
여러분은 아마 Anaconda를 설치했을 것입니다.
Anaconda Console을 실행하거나 맥 혹은 리눅스 사용자의 경우 터미널을 열어 봅니다.

다음과 같이 실행하여 jupyter console을 실행합니다.

jupyter console



파이썬의 모듈 경로를 확인합니다.

import sys
sys.path


맨 뒤가 site-packages로 끝나는 경로에 주목합니다. 해당 경로에 파이썬 모듈(즉 py로 끝나는 파일)을 넣어 두면 손쉽게 python -m 옵션으로 이를 실행하는 CLI 프로그램이 됩니다.

위 깃 허브 링크에서 다운로드 받은 pyrename.py 파일을 site-packages 폴더에 넣습니다.

이제 특정 경로에 저장된 이미지 파일의 이름을 임의로 변경합시다. 콘솔이나 터미널을 열어서 작업합니다.
콘솔에서 디렉토리를 바꾸려면 cd 경로이름 이렇게 합니다.

팁: 윈도의 사용자는 우선 파일 익스플로러 상단의 주소를 ctrl+c로 복사하고 터미널에서 cd 뒤에 커서를 위치시킨 뒤 마우스 우클릭을 합니다. 경로가 바로 붙습니다.

팁: 맥 사용자는 Finder에서 "편집"으로 간 다음 옵션키를 누르면 경로 복사하기가 보입니다.

Dowloads 폴더의 enw 파일 이름을 한 번에 변경해보겠습니다. 터미널을 열어



cd /Users/tagg/Downloads
python -m pyrename --help


--help를 보니 -e 와 -dt 옵션에 관한 설명이 있습니다.

이제 실행 합시다.

python -m pyrename -e enw -dt

enw로 끝나는 확장자를 모두 바꾸고, 날짜 옵션(dt)를 켰습니다.



이상 파이썬 모듈을 설치하여 사용하는 방법을 살펴봤습니다.
CLI 프로그램에 관심이 있는 사람은 깃허브 소스코드를 다운로드 받아 살펴보시면 좋겠네요.


웹 크롤링 기초-셀레니움selenium, 크롬웹드라이버 설치, HTML


 안녕하세요 오늘은 판다스 기초에 이어서 웹 크롤링 기초를 공부해보려고 합니다.

이번 글에서는 셀레니움 설치, 크롬웹드라이버 설치와 HTML 에 대해 간략하게 배워볼 예정이고

다음 글에서는 BeautifulSoup 라이브러리를 활용한 HTML 정보 찾기에 대해 다뤄보려고 합니다.




저번에 판다스를 다룰 때에는 파이참에서 interpreter 로 아나콘다를 사용했었는데요

지금도 미숙하지만 당시에는 더 많은 것을 몰라서 판다스를 사용하기 위해서는 아나콘다를 필수적으로 사용해야한다고 생각해 아나콘다를 사용했습니다만

이런 저런 예제를 다루면서 기존 파이참 파이썬 interpreter 로도 판다스 사용이 가능하다는 것을 알게되었습니다. 

그래서 오늘은 아나콘다가 아닌 파이참 파이썬을 사용할 예정입니다. 나중에 아나콘다에 대해 더 공부해서 정리해보는 시간을 가져야 할 것 같습니다...ㅠㅠ 


파일, 디렉토리를 복사하고 삭제하는 방법

 파이썬에서 파일을 복사하거나 삭제하려면 os와 shutil 모듈을 사용합니다.


import os

import shutil


파일을 복사할 때는 


shutil.copfyfile("원본 파일","대상 파일")


이렇게 하면 됩니다.

폴더를 복사하려면


shutil.copytree("원본 폴더명","대상 폴더명")


간단하죠?


파일을 삭제하려면


os.remove("파일 이름")


폴더를 삭제하려면


shutil.rmtree("폴더 이름")


참고로 os.remove()와 shutil.rmtree()의 결과는 되돌릴 수 없습니다. 신중하길!

ADsP 스터디 모집합니다

 모집 링크(클릭)

공고 기간: 2021년 1월 15일 - 2021년 1월 20일 (21일 이후 받지 않음)

스터디 운영 지침:

[1] 4인 이하 오프라인 모임 허용(광운대 누리관 시설 이용만 허가, 추우니까 가능하면 온라인에서)

[2] 준비 교재는 각 팀에서 정하시면 됩니다(지난번 교재 너무 어려움).

[3] 일주일에 2회 이상 스터디 원칙

[4] 2021년 상반기 응시(스터디 팀이 모두 함께 응시할 것)




파이썬을 공부하는 꿀팁

컴퓨터에 익숙해지려면 컴퓨터를 많이 써야 합니다. 맨날 하는 미니언 잡기를 생각해보세요. 연습만이 살길.

하지만 어디서 무엇을 얼마나 해야할까?

컴퓨터 책을 펴서 공부를 해도 어떻게 실력을 키울까 궁금하죠?

여러분에게 필요한 것은 "메모장"입니다(프로그램).

책을 보다가 코드나 키워드가 나오면 메모장을 열어서 50번씩 써보세요. 

컴퓨터 프로그래밍을 공부하는 일이나 영어 단어를 외우는 일이나 별로 다르지 않습니다. 인문계열 중 코딩 고수가 많은 이유도 비슷하지 않나 싶습니다. 암기왕.

모듈 os

 파이썬에 기본으로 포함된 모듈인 os 는 자동화된 프로그램 스크립트를 제작할 때 필요하다. 예를 들어 디렉토리를 바꾸고, 새로 폴더를 만들고, 파일을 복사하거나 삭제하는 일을 하는 작은 프로그램을 제작할 때 사용한다.


몇 가지 것들을 알아보자.

우선 os 모듈을 사용하기 위해 import 해야 한다.

import os

먼저 현재 실행 중인 파이썬의 작업 경로를 바꿔보자. chdir()을 사용한다.

현재 작업 중인 경로를 Document라고 하자. 그 상위 폴더로 올라가려면 ".."을 하면 된다. "."은 현재 폴더, ".."은 상위 폴더를 뜻 한다.

os.chdir('..')

이제 다시 Documents로 돌아가려면?

os.chdir('Documents')

현재 작업 중인 폴더의 정보를 가져오려면 getcwd()를 쓴다. "get current working directory"의 줄임말이다.

os.getcwd()
[1] '/Users/tagg/Documents'

환경 변수를 사용해보자. 운영체제가 실행되면 환경변수를 시스템에 등록한다. 이 변수는 모든 프로그램이 다 함께 공유할 수 있다. 환경변수를 통해 서로 다른 프로그램 간의 정보를 교환할 수 있다. 환경 변수 중 대표적인 것이 PATH다. 실행파일의 경로를 저장한 환경변수다. 이 변수를 파이썬에서 참조하려면 getenv() 를 사용하면 된다.

os.getenv('PATH')

결과는 다음과 같다:

'/Users/tagg/Downloads/google-cloud-sdk/bin:/Users/tagg/opt/anaconda3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin'

디렉토리의 자원을 보기 위해 os.listdir()을 사용한다. 물론 glob과 같은 상위 차원의 모듈을 사용해서 같은 결과를 얻을 수도 있다.


디렉토리를 만들고 싶다면 os.mkdir() 을 사용하자.

os.mkdir("test_pyr")

현재 디렉토리를 보면 test_pyr이라는 이름의 폴더가 생성된 것을 확인할 수 있다. 폴더가 있는데도 os.mkdir()을 실행하면 에러가 발생한다. 이때의 예외처리자의 이름은 FileExistsError이다. 

파일을 삭제하려면 os.remove()를 사용한다. 되돌릴 수 없기 때문에 신중하게 써야 한다. 폴더를 지우려면 os.rmdir()을 사용한다. 다만, 폴더 안의 내용이 모두 비워져야 한다. 폴더 안의 파일까지 다 지우려면 shutil의 rmtree()를 사용하자. 다른 포스트를 통해 shutil을 소개하겠다.

이외, 파일의 이름을 바꾸는 os.rename()도 유용하다. os.rename('oldfile.txt','newfile.txt')와 같이 사용한다.

지금까지 언급된 os의 함수, 매쏘드, 클래스 등은 다음과 같다.

os.chdir()
os.getcwd()
os.getenv()
os.listdir()
os.mkdir()
os.remove()
os.rmdir()
os.rename()

파일을 정리하기 위해 os를 사용하는 빈도는 대단히 높다. 

이외에도 os는 고급 프로그래밍을 위한 파일 처리기가 포함되어 있다. 





함수 (3.6-3.11)

  함수


3.6 람다함수

    파이썬에서 함수는 이름이 없고 객체만 있음. 이름이 아닌 기본 레퍼런스임.
    -> 따라서 파이썬에서는 이름이 없고 함수 객체만 존재하는 익명함수를 만들 수 있다.

    LAMDA
    * 필요한 곳 어디에서나 쓰일 수 있고 return구문을 적지 못한다.
     (return구문을 
적지않아도 하나의 반환값을 돌려줌.)
     한줄을 실행한 결과 값이 바로 반환값이 됨.
    
    lamda 인자 : <구문>

    -> 람다는 간단한 함수에 용이하며 한 줄 이상 구문
     을 적을 수 없지만 \를 이용해 여러 줄을 입력할 수 있음.


    

3.7 재귀적 함수 호출 
     
    재귀적 함수 호출 : 함수 내부에서 자기 자신을 호출. 
                        (변수를 조금씩 변경하면서 
연속적으로 반복된 연산이 필요할 때 사용).

    
-> factorial함수는 인자 값을 -1씩 감소시키며
        자기 자신을 호출한다.


3.8 pass

    


    source : https://jangjy.tistory.com/238


    source : https://shydev.tistory.com/17


    * pass 함수는 아무일도 하지 않는다. 프로젝트를 하다보면 아무것도 하지 않는 함수,
        모듈, 클래스를 만들어야 하므로 이 때에 pass를 사용할 수 있음.


3.9 __doc__ 속성과 help 함수 
    
    help 함수 : 특정 함수를 어떻게 사용해야 하는지 모를 때 어떤 값을 매개변수로 받는지
    어떤 값을 반환하는지 등을 알 수 있다. (직접만든 함수, 모듈 또한 그렇다.)
    
    __doc__ : 생성한 함수에 더 자세한 설명을 추가하고 싶을 떄 사용. (객체에 대한 설명)
    

3.10 이터레이터

    순회가능한 객체에는 이터레이터(iterator)라는 특별한 객체가 포함되어 있다.
    이터레이터는 순회가능한 객체의 요소에 순서대로 접근할 수 있는 객체이다.

    


    source : https://plas.tistory.com/65


    source : https://wikidocs.net/22


3.11 제네레이터 (generator)

     제네레이터는 이터레이터를 만드는 강력한 도구이다. 

* 입원중으로 곧 마저 업데이트 하겠습니다.

판다스 기초-데이터 통합하기, 저장하기, 집계하기

 저번 판다스pandas 를 이용한 데이터 선택하기에 이어서 이번 포스팅에서는 데이터 통합하기, 저장하기, 집계하기를 공부해보려고 합니다

"판다스 기초-데이터 선택하기" 포스팅을 보실 분들은 아래 링크로 이동해주세요 ▼

https://pyrstudy.blogspot.com/2021/01/blog-post_13.html


저번 포스팅에 이어서 이번에도 sample_1 엑셀 자료를 사용할 예정이고

sample_codemaster.xlsx 과 sample_2.xlsx 도 사용 예정입니다.

다운 하실 분들은 아래 링크를 클릭하시면 됩니다.

(sample_1, sample_2, code_master 순)

https://drive.google.com/file/d/1AWo8p8CUnu5VOcNqNdAkiZFni2s66K_y/view?usp=sharing

https://drive.google.com/file/d/1zpSa2UYorx9E0ge5hNfM27tmbahX7heb/view?usp=sharing

https://drive.google.com/file/d/1qZM5vhui7HUCYvZAWiTfTPLJ0GHxNYqW/view?usp=sharing



데이터 통합하기에는 크게 두 가지 경우로 구분할 수 있습니다.
위 사진과 같이 하나는 옆으로 통합하기이며 나머지 하나는 아래로 통합하기입니다.


판다스 기초-데이터 선택하기



저번 판다스pandas 를 이용한 데이터 불러오기에 이어서 이번 포스팅에서는 데이터 선택하기를 공부해보려고 합니다

"판다스 기초-데이터 불러오기" 포스팅을 보실 분들은 아래 링크로 이동해주세요 ▼

https://pyrstudy.blogspot.com/2021/01/with.html


 

저번 포스팅에 이어서 이번 포스팅에서도 아래의 데이터를 사용할 예정입니다.

새로 다운 받으실 분들은 아래 링크를 클릭해주세요

https://drive.google.com/file/d/1AWo8p8CUnu5VOcNqNdAkiZFni2s66K_y/view?usp=sharing




(3) 데이터 선택하기 – 1. 칼럼기준

 -예제 3-1: 한 개의 칼럼 선택하기, 여러 칼럼 선택하기



입국객수 라는 칼럼만 보고 싶을 경우, sample_1[‘입국객수’] 를 사용합니다.

여러 개의 칼럼을 선택하기 위해서는 예제와 같이 여러 개의 칼럼을 리스트로 묶어서 입력하면 됩니다sample_1[[‘국적코드’,’입국객수’]]

(리스트로 묶어서 입력하는 것이기 때문에 [] 괄호가 두 개씩 사용됩니다.)


-예제 3-2: 칼럼 생성하기



기존 데이터에서 존재하지 않던 “기준년월이라는 칼럼에 ‘2019-11’ 이라는 값을 부여한 결과

기준년월’ 이라는 신규 칼럼이 만들어졌습니다.

이 예제와 같이 데이터에 존재하지 않던 칼럼에 값을 부여하면 새로운 칼럼이 생성됩니다.



(4) 데이터 선택하기 – 2. 로우 기준

-예제4-1: 필터링 실습1 (남성 데이터만 출력하기)


 

condition ()안의 조건문에 따라 값을 변환합니다.

예제에서는 ()의 내용이 성별이 남성이면 True를 여성이면 False 로 변환되게 했습니다.

이에 따라 성별이 남성인 0, 2, 4 True 값을 가지게 되었습니다.

sample_1[condition] 을 출력하면 true 값을 가지고 있는 0, 2, 4 번만이 출력됩니다.


-예제 4-2: 필터링 실습2 (150000명 이상만 출력하기)



예제 4-1과 같이 condition을 사용하여 입국객수가 150,000명 이상인 경우를 찾아봤습니다.
condition =(sample_1[‘입력객수’]>=150000) 


-예제 4-3: 두 개의 칼럼에 대해 필터링 하기 ( &. | , isin) + 역슬래시-줄 바꿈 표시




예제 4-3의 경우 "&"의 기호를 사용해 두 가지 조건물을 동시에 충족하는 케이스만을 추출했습니다. "&"기호는 and 를 의미합니다. 이 예제의 경우 성별이 남성이면서 동시에 입국객수가 150,000명 이상인 데이터를 선택해보았습니다.

위 두 사진 모두 같은 추출값을 갖는 코드인데요, 차이점이라면 역슬래시를 사용한다는 점입니다. 역슬래시는 두 줄을 한 줄로 인식하라는 의미입니다. 줄이 너무 길 때 사용해주는 기호입니다.




이 두번째 경우는 위 경우와 달리 & and 기호가 아닌 | or 기호를 사용해
여러 조건 중 한 가지 이상만 만족해도 되는 경우로 설정해 데이터를 선택해보았습니다.



여러 가지 조건 중 한 가지 이상만 만족해도 되는 경우를 출력하는 방법에는
| or 기호를 사용하는 방법 외에도 isin() 함수를 사용하는 방법도 있습니다.



isin() 함수 안에 찾고 싶은 값들을 리스트 형태 ['A01','A18']로 설정하면
국적코드에서 리스트 안의 값에 해당할 경우 True 값을 변환합니다.
이를 sample_1 에 적용해 출력하게 되면 국적코드가 'A01','A18' 에 해당하는 값들이 출력됩니다.





isin()함수를 이용해 설정한 조건이 아닌 그 반대의 경우를 찾고 싶을 때
condition == False 라는 조건을 부여하면 isin()함수 내 조건에 해당하지 않는 값들이 선택되어 출력됩니다.



오늘은 판다스를 이용한 데이터의 칼럼과 로우를 선택하는 방법을 공부해보았는데요
다음 글에서는 여러 데이터를 하나의 데이터로 통합하는 방법을 알아보도록 하겠습니다.
(저번에 작성 중이였는데 갑자기 글이 올라갔더라구요.. 아직 미숙하네요 ^^;;
그럼 저는 여기서 글을 마칩니다)










ADsP 스터디반 모집 사전 공고

 곧 ADsP 스터디 모집 공고를 올립니다.

코로나19 사태가 악화되어 오프라인 모임을 할 장소가 없습니다. 학교와 까페 모두 장소를 구하기가 어렵습니다. 따라서 온라인으로 모일 수밖에 없습니다.

ADsP 교재가 시중에 점차 많아지고 있습니다. 이 자격증은 조기에 획득해야 합니다. 시간이 지나면 공부해야 할 내용이 점차 많아질 것입니다.

아울러 졸업 대체로 활용할 수 있습니다. 혹시 아직 없는 사람은 R도 공부하고 졸업도 쉽게 할 수 있는 ADsP 취득에 도전하시기를 바랍니다.


스터디는 3인으로 운영합니다. 책을 정해서 진도를 나가십시오. 계획된 진도 안에서 퀴즈를 만들어(방식과 개수는 서로 합의) 문제를 서로 돌려가며 풀고 채점하십시오. 문제를 가져오지 않거나 점수가 기준점 이하면 회비를 걷으십시오(아주 작음 금액! 나중에 모여서 커피 한 잔 할 때 도움이 되는 정도). 같이 시험 일정을 정하고 시험에 도전하십시오. 총무를 한 명 정하고(고정), 스터디 보고자는 매번 바꾸십시오.


스터디 팀의 보고 의무

1. 결성(구글 서베이)

2. 스터디 모임과 후기(날짜, 장소(줌 링크와 스크린 샷, 프로필 사진이 보이게), 진도, 퀴즈 파일), 다음 일정)

보고할 곳: kimtk@office.kw.ac.kr (김태경 교수)


 

ggplot2 갤러리

 주소: https://www.r-graph-gallery.com/

R 시각화 패키지인 ggplot2는 아주 유명합니다.

ggolot2의 예제를 모아둔 사이트를 소개합니다. 예제들을 따라하며 실력을 키울 수 있으니 꼭 참고하시기를 바랍니다.

Python Basis - 1. Python 기초 (자료형 및 연산자)

* 본 기고는 스터디 교재인 'Python Basis'를 기반으로 작성되었습니다. 


* 본 기고는 일주일에 한번 작성하는 것을 목표로 하고 있으며 해당교재를 학습하고 있는 학우분들께서는 학습하면서 막히는 내용을 해당회차에 댓글로 남겨주시면 감사하겠습니다.

기고자 또한 학습을 하며 모르는 부분을 디베롭하여 해당 글을 반복하여 수정할 것입니다. 학습을 하지 않는 분들도 피드백을 해주시면 감사하겠습니다. --------------------------------------------------------------------------------------


   Strderr

>>>Print(“welcome to”,”python”, sep=”~”, end = ‘!’, file = sys.stderr)

Welcome to~python!


해당 코드에서 출력(file)에 해당하는 인자는 어떤 내용일까?


sys.stderr(해당인자는) 표준에러 발생시 콘솔에 에러 메시지를 띄울 때 사용한다.



*들여쓰기

If == 1 :

Print(1)

Else :

Print(0)



1) 동일한 블록 내에서는 같은 들여쓰기를 써야함(space, tab)

2) 하위레벨의 코드블록을 부여하려면 : 콜론을 써야함.

;(세미콜론) : 한 라인에 여러구문이 올 때 ex) a=1 ; b=2

\ : 문장이 아직 끝나지 않았음을 표시

자료형 및 연산자

변수 : 연산을 하기 위한 값들을 임시로, 영구적으로 저장하는 저장소

자료형 : 변수의 유형

변수명 : 문자, 숫자, 밑줄(_) 가능. 숫자는 처음에 나올 수 없음.

예약어는 변수명으로 사용할 수 없음. (예약어: 이미 문법적으로 용도로 사용되도록 예약되어 있는단어, 식별자로 사용할 수 없음)

=(치환연산자)

1) 수치 : 자료형 ex) int, long, float, complex

int : 10진수 정수

정수 앞 0o : 8진수, 0b : 2진수, 0x : 16진수 // reverse) oct(),hex(),bin() (10진수)-> 해당진수

float : 실수

complex : 복소수

2) 문자

‘ or “

다량의 내용을 넣고 싶은 경우( 줄넘김 그대로) : ‘’’ or “””

이스케이프 문자를 활용한 문자열

다음과 같이 \t과 \n을 사용하여 탭과 줄바꿈을 문자열에서 사용할 수 있다.

로(raw)문자열 선언 (문자열앞에 r을 선언하면 ‘’안의 문자를 이스케이프 문자와 관계없이 그대로 출력할 수 있음)

*\r : 캐리지 반환 / 커서를 앞으로이동

-> 2번째 줄 다음줄의 앞 두글자가 맨앞으로 변경되었다.

* 문자열 연산

+ : 문자열 병합

* : 문자열 반복

+는 문자열 상수끼리의 병합일 때에는 생략가능하다.

* 문자열 인덱싱 (indexing)

변수뒤에 원하는 [위치]를 붙여서 원하는 문자 꺼냄. 제일처음 0시작.

-> 인덱싱으로 문자열변경 불가.

*문자열 슬라이싱 (인덱싱이지만 한 문자가 아닌 한 문자열을 꺼냄)

[시작위치 : 끝위치]

처음 문자의 위치는 0이고 끝위치는 +1

ex) . p . y . t . h . o . n . (.위치에 인덱스 숫자를 넣는다고 생각)

0 p 1 y 2 t 3 h 4 o 5 n 6

-6 p -5 y -4 t -3 h -2 o -1 n

+) 증가여부 슬라이싱

[시작위치 : 끝위치 : 증가인자 ]

p y t h o n

3) 유니코드

문자열 표현방식(인코딩)의 다양성

-> 모든 컴퓨터에서 문자열이 동일하게 출력된다고 볼 수 없음.

-> 일관된 문자 인코딩체계 : 유니코드

-> more : www.unicode.org

파이썬3에서는 문자열이 기본적으로 유니코드이다.

-> 유니코드 to 다른 character set : 인코딩(encoding)

-> 다른 character set to 유니코드 : 디코딩(decoding)

4) 리스트

: 값의 나열, 순서가 존재하며 여러 종류의 값을 담을 수 있음.

0부터 시작하는 인덱스가 있음. -> 슬라이싱 가능.

* append() : 기존의 리스트에 값을 추가.

*insert() : append는 리스트 맨 뒤에 추가되지만 insert 메서드를 이용하면 원하는 위치에 값을 넣을 수 있다.

insert (위치, ‘내용’)

* extend() : 한번에 여러 값을 삽입.

기존의 리스트에 리스트를 삽입하였다.

* 리스트의 더하기 연산자

-> 더하기 연산자를 사용하는 경우에는 extend() 메서드와 마찬가지로 튜플이나 리스트와 같은 순회가능한값을 넣어야한다.

순회가능한 값이란?

iterable data를 의미하며 str나 list와 같이 첨자로 접근 가능한 자료를 말한다.

출처:https://planbs.tistory.com/entry/Python-Iterable-%EC%9E%90%EB%A3%8C%ED%98%95-List-Tuple

만약 문자열을 넣으면?

-> 문자열을 쪼개어 각 문자 삽입.

* index() : 문자열안의 값이 어디에 있는지 확인.

index(‘내용’, 시작점, 종결점), 원하는 값 없는 경우 에러.

* count () : 해당 값의 개수를 반환.

* pop()

: 해당 값을 뽑아냄. 인자를 생략하면 뒤에서부터 값을 뽑음. pop되면 해당 값은 리스트 상에서 사라짐.

* remove : 해당 값 삭제

*sort() : 순방향 정렬

* reverse() : 역방향 정렬 -> 문자열 정렬은 알파벳 순서로 정렬된다.

* sort () : 자신이 원하는 방식으로 정렬. 파라미터) key : 정렬 방식, reverse : 정렬여부

5) 세트

집합과 같음. 리스트와 마찬가지로 값의 모임이지만 순서는 없다.

{} 로 묶어 정의하며, 메서드는 리스트와 거의 유사하지만 추가적으로

교집합. 합집합을 구할 수 있다. 또한 차집합, 합집합, 교집합 연산자를 제공.

6) 튜플

: 리스트와 유사하지만 읽기전용이다(수정불가). 따라서 제공되는 함수는 적지만 그 만큼 속도가 빠르다. ()로 표현.

-> 리스트, 세트, 튜플은 서로서로 언제든지 변환이 가능하며 in 연산자 또한

모두 동일하게 적용된다.

7) 사전

: 키와 값으로 구성됨.

-> 키값으로 검색해야함(값으로 검색불가)

-> 인덱스는 지원하지 않음.

*사전에 새로운 값을 추가

* items() : 사전의 모든 키와 값을 튜플로 묶어서 반환.

* keys() :키만 반환 / values() : 값만 반환.

* del문 / clear() : 사전의 삭제

8) 부울 : 참과 거짓을 나타내는 자료형, 사용가능 값 : TRUE, FALSE

> , < ,>= ,<=

==, !=

* &(and) : 두 값이 모두 참이면 TRUE

*or( |) : 둘 중 하나의 값만 참이여도 TRUE

*‘not : 반대되는 값을 반환

* 수치 : 0 은 FALSE, 나머지 숫자는 TRUE

* 문자열 : 빈문자열만 FALSE , 값이 없는 상태인 None의 경우도 FALSE

9) +) 얕은 복사와 깊은 복사 / copy() & deepcopy()

* 변수와 객체

위의 예제롤 보면 b에 a의 객체가 복사되는 것처럼 보이지만 사실은 a가 [1,2,3]의 주소를 복사한 것처럼 b도 [1,2,3]의 주소를 복사한 것이다. 그래서 a와 b의 주소는 사실상 같다. (같은 메모리를 공유하고 있는 것을 알 수 있다.) 따라서 a의 첫번째 값을 5로 바꾸었더니 b의 값도 바뀐 것을 볼 수 있다. 이를 방지하기 위해서 강제복사가 필요하다. b=a[:]를 통해 a의 전체를 b에다 복사하면 a와 b는 서로 다른 주소값을 갖는다. 따라서 a의 값을 바꾸어도 b의 값이 바뀌지 않는다. 이 맥락은 copy(얕은복사), deepcopy(깊은복사)와 연결지을 수 있다.

PyR Intro - 신입생OT학기제