※ 학습 노트

학습 날짜

 2020년 1월  

학습 사이트 

 인프런

과정 제목

 파이썬입문과 크롤링기초 부트캠프 (2020 업데이트) [쉽게! 견고한 자료까지!] 

학습 시간

 72강/941분

의견

 - 크롤링이 뜻대로 되지 않는 부분에 대한 팁을 얻기 위해 등록한 과정이기 때문에 

   스파르타 코딩 클럽에서 배운 것과 겹치는 부분은 스킵하고 필요한 부분부터 우선적으로 듣기로 함

 - 개념적인 것을 엄청 자세하게 설명해서 초보자(나)에게 좋음. 기존에 배운 것 복습 + 빈 곳을 채우는 느낌

 - 10~20분 단위로 micro하게 구성

 학습 모듈

 크롤링과 웹 기본 - 실전부분 




크롤링과 웹 기본__패턴으로 실습하며 익히기: HTML/CSS 이해를 바탕으로 크롤링하기

* 크롤링 패턴 코드

import requests
from bs4 import BeautifulSoup

res = requests.get('https://news.v.daum.net/v/20170615203441266')
soup = BeautifulSoup(res.content, 'html.parser')

mydata = soup.find_all('span','txt_info')
for item in mydata:
print (item.get_text())


*meta tag는 검색 엔진에 해당 페이지를 잘 검색할 수 있도록 쓰이는 경우가 많음

*해당 tag가 html 내에서 여러 군데 사용되고 있는 경우 class를 활용

*크롤링을 하고 싶은 부분이 class를 여러 개 사용 있는 경우,  class를 띄어쓰기 포함 그대로 사용

*mydata.get_text 또는 mydata.string 사용



크롤링과 웹 기본__패턴으로 실습하며 익히기: 실전 크롤링과 강력한 크롤링 기술 팁 

* 오픈 크롬 개발자 모드를 오픈 

   : 윈도우 Ctrl + Shift + i 또는 F12

* 원하는 영역 오른쪽 클릭한 후 copy > Copy outer html 복사 가능

* find()로 더 크게 감싸는 html 태그로 추출 후, 추출된 데이터에서 find_all()로 원하는 부분을 추출

* 문자 전처리할 때: strip(), split() 함수 사용

* 리스트에 숫자 붙일 때

for index, title in enumerate(titles):
print(str(index+1)+'.', title.get_text().split()[0].string())



크롤링과 웹 기본__CSS selector 사용해서 크롤링하기

* select()안에 태그 또는 CSS class 이름 등을 넣으면 결과값은 리스트 형태로 반환됨

* 하위 태그는 스페이스로 구분

* 모든 단계의 태그를 다 적을 필요는 없지만, 바로 밑의 태그에 해당하는 부분을 추출하고 싶을 때는 ul > a  식으로 > 사용

* class 이름을 사용하고 싶을 때에는 .사용, class 여러 개일때도 .사용하여 이어줌  

  id 는 # 사용 

* find()/select()로 가져온 객체는 find()/select() 모두 교차 사용 가능



바로 실전 크롤링해보기: 네이버 쇼핑 사이트 크롤링하기

#네이버쇼핑 best100 인기검색어

import requests
from bs4 import BeautifulSoup

res = requests.get('https://search.shopping.naver.com/best100v2/main.nhn')
soup = BeautifulSoup(res.content, 'html.parser')

items = soup.select('#popular_srch_lst > li > span.txt > a')
for item in items:
print(item.get_text())


#네이버쇼핑 특정 카테고리 상품 제목 

import requests
from bs4 import BeautifulSoup

res = requests.get('https://search.shopping.naver.com/search/all?frm=NVBT100&origQuery=%EB%8B%A4%EC%9D%B4%EC%96%B4%EB%A6%AC&pagingIndex=2&pagingSize=40&productSet
=total&query=%EB%8B%A4%EC%9D%B4%EC%96%B4%EB%A6%AC&sort=rel&timestamp=&viewType=thumb')
soup = BeautifulSoup(res.content, 'html.parser')

items = soup.select('div.imgList_title__3yJlT > a')

for item in items: print(item.get_text()) 


#네이버증권 인기검색종목

import requests
from bs4 import BeautifulSoup

res = requests.get('https://finance.naver.com/sise/')
soup = BeautifulSoup(res.content, 'html.parser')

items = soup.select('#popularItemList > li > a')
for item in items:
print(item.get_text())



또다른 크롤링 기술, urllib 라이브러리 사용법 이해

* 기존에는 urllib+bs4 세트로 많이 사용하였는데, 최근에는 requests + bs4 세트를 많이 사용

  기존 코드 중 일부가 urllib 사용하는 경우가 있으며 인코딩 처리가 다름

* requests 라이버리를 사용해서 크롤링 진행하고, 문제가 있는 경우만 urllib 시도

from urllib.request import urlopen #urllib request class에 들어있는 urlopen 함수만 필요
from bs4 import BeautifulSoup

res = urlopen('https://davelee-fun.github.io/')
soup = BeautifulSoup(res, 'html.parser')

items = soup.select('h4.card-text')
for item in items:
print(item.get_text().strip())



여러 페이지 한번에 크롤링하는 기법

* 주소에있는 페이지 번호를 활용하여 for 구문 사용

import requests
from bs4 import BeautifulSoup

for page_num in range(10):
if page_num == 0:
res = requests.get('https://davelee-fun.github.io/')
else:
res = requests.get('https://davelee-fun.github.io/page' + str(page_num + 1))
soup = BeautifulSoup(res.content, 'html.parser')

data = soup.select('h4.card-text')
for item in data:
print(item.get_text().strip())



크롤링해서 엑셀 파일로 데이터 저장하기

* openpyxl 라이브러리 활용

* 함수 설정

import openpyxl

def write_excel_template(filename,sheetname,listdata):
excel_file = openpyxl.Workbook() #엑셀 파일 오픈
excel_sheet = excel_file.active #엑셀 시트 선택

if sheetname !='': #시트이름이 없으면 넘어가기
excel_sheet.tile = sheetname

for item in listdata:
excel_sheet.append(item)
excel_file.save(filename)
excel_file.close()


* 크롤링해서 저장하기

import requests
from bs4 import BeautifulSoup

product_lists = list()

for page_num in range(10):
if page_num == 0:
res = requests.get('https://davelee-fun.github.io/')
else:
res = requests.get('https://davelee-fun.github.io/page'+str(page_num+1))
soup = BeautifulSoup(res.content,'html.parser')

data=soup.select('div.card')
for item in data:
product_name = item.select_one('div.card-body h4.card-text')
product_date = item.select_one('div.wrapfooter span.post-date')
product_info = [product_name.get_text().strip(),product_date.get_text()]
product_lists.append(product_info)

write_excel_template('tmp.xlsx','상품정보',product_lists)


* 엑셀파일 불러오기

for item in excel_sheet.rows:
print (item[0].value, item[1].value) #셀에 들어있는 값을 가져오기 위해 .value를 붙여줌


excel_file.close()




반응형


※ 학습 노트

학습 사이트 

 인프런

과정 제목

 파이썬입문과 크롤링기초 부트캠프 (2020 업데이트) [쉽게! 견고한 자료까지!] 

학습 시간

 72강/941분

의견

 - 크롤링이 뜻대로 되지 않는 부분에 대한 팁을 얻기 위해 등록한 과정이기 때문에 

   스파르타 코딩 클럽에서 배운 것과 겹치는 부분은 스킵하고 필요한 부분부터 우선적으로 듣기로 함

 - 개념적인 것을 엄청 자세하게 설명해서 초보자(나)에게 좋음. 기존에 배운 것 복습 + 빈 곳을 채우는 느낌

 - 10~20분 단위로 micro하게 구성

 학습 모듈

 강의 준비

 파이썬과 프로그래밍 기초를 견고하게 쌓는 가장 좋은 방법 - skip

 파이썬 객체와 라이브러리 - skip

 크롤링과 웹 기본 



강의준비_데이터과학과 IT 영역에서의 파이썬과 크롤링 큰그림 이해하기

* 영역: 웹, 앱, 응용 프로그램, IoT, 인공지능

* 단계: 데이터 수집 - 저장 - 분석 - Visualization - 서비스 개발



강의준비_프로그래밍 언어 기초와 파이썬 이해

* 프로그래밍 언어: 인간이 컴퓨터와 소통할 수 있도록 컴퓨터가 이해할 수 있는 명령으로 프로그램을 작성할 수 있도록 만든 언어

  - 컴퓨터는 기계어 (0과 1로 된 이진수 형태로 CPU가 이해할 수 있는 코드)만 이해한다



강의준비_anaconda와 jupyter notebook 소개와 설치

* 아나콘다(anaconda) 확장 기능 + 컴파일러 프로그램까지 한 번에 설치할 수 있는 프로그램

  - 파이썬 기본(컴파일러), 주요라이버리, 주요툴(jupyter notebook포함)을 모아놓은 패키지

  - 컴파일러 고급 언어로 작성된 코드를 기계어로 변환하는 프로그램



크롤링과 웹 기본_패턴으로 실습하며 익히기: 크롤링 코드 패턴으로 이해하기

  #라이브러리 임포트

 import requests

 from bs4 import BeautifulSoup

 #웹페이지 가져오기

 res = requests.get('사이트주소')

 #웹페이지 파싱하기

 soup = BeautifulSoup(res.content, 'html.parser')

 #필요한 데이터 추출하기 

 mydata = soup.find('title')

 #추출데이터 활용하기

 print(mydata.get_text()) 


* 웹기본구조

- 네트워크를 통해 내 컴퓨터와 다른 컴퓨터를 연결하고 정보를 주고 받을 수 있음

- 어떤 컴퓨터에서 정보를 받아올지 지칭하는 주소가 IP주소

- IP 주소를 이름으로 표기한 것이 웹주소 

- 주소를 넣으면 html로 구성된 파일을 달라고 요청하고 html은 해당 정보를 웹브라우저 안에서 보여줌


* 파싱 문자열의 의미를 분석하는 것


* 데이터 추출

soup.find('html코드')

변수.get_text




HTML


크롤링과 웹 기본_크롤링을 위한 지식: 웹구조와 HTML 이해하기

* 웹페이지는 HTML, CSS, javascript로 표현

* HTML

   - HTML은 마크업 언어: 문서나 데이터의 구조를 표현하는 언어

   - HTML 언어 : 웹페이지를 만드는 언어

   - 꺽쇠 <>와 tab로 표현

* Sublime Text 3 프로그램: HTML 에디터


*HTML 기본구조

<!DOCTYPE html> 이 문서는 HTML 언어를 사용

 <html> 여기서부터 HTML 문서 시작

 <head> 문서 전체 정보 (제목 등)

 </head>

 <body> 실제 웹페이지 표현되는 내용

 </b> enter

 </body> 

 </html>


  <head>

 <title> 제목 </title> 웹페이지의 타이틀이라 본문에 표시되지 않지만 탭에서 확인 가능

 <meta charset="utf-8"> 글씨가 깨질 때 추가 

 </head>


*태그 속성

<태그 속성(속성 이름, 속성 값) 속성 속성>

- 속성과 속성 사이는 한 칸씩 띄어야함


*구조화된 태그 (테이블)

  <table border="1">

   <thead> 한 테이블의 타이틀(표 머리글)

      <tr>

          <th>1*1</th>

      <tr>

   </thead>

   <tbody> 본문 내용

      <tr>

          <td>1*1</td> 

      <tr>

  </tbody> 

 </table>



크롤링과 웹 기본_패턴으로 실습하며 익히기: HTML 이해를 바탕으로 크롤링하기

*속성을 가져오는 방법

soup.find('태그')

 

#예시

 data =soup.find('p', class_='cssstyle') #클래스가 cssstyle을 가져오는 것

 data =soup.find('p', attrs={class':'cssstyle') #속성과 속성값을 그대로 기입 / 속성 여러 개 나열 가능

 data =soup.find('p', 'cssstyle')

 data =soup.find('p', id='body') 


 datas =soup.find_all #전체 다 찾아주나 리스트 형태로 보여주기 때문에 for 구문써줘야함

 for find_data in find_datas:

      print (find_data.get_text())


* 크롤링에서 가장 많이 쓰는 속성은 class이고 css 언어와 관련


CSS


크롤링과 웹 기본_크롤링을 위한 지식: 웹구조와 CSS  이해하기

* HTML로 웹페이지 구조(내용)을 표현하고 CSS언어를 활용하여 디자인하는 것이 일반적

* CSS 언어 적용 방법 

  1) 적용할 태그에 style 속성으로 넣기

  2) HTML문서 <head>안에 <style>태그로 넣기

  3) HTML문서 <head>안에 CSS파일 링크하기

* css언어는 프로퍼티와 프로퍼티 값으로 이루어짐. 

* 프로퍼티 정의는 구글 검색하여 css tutorial 활용


* 적용 방법 별 예시

  1) 적용할 태그에 style 속성으로 넣기

<td style ="text-align:center; color:blue">

세미콜론으로 구분해서 프로퍼티와 값을 연속으로 사용 가능. 띄어쓰기 해도 되고 안해도 됨


  2) HTML문서 <head>안에 <style>태그로 넣기

<style type="text/css">

td{

    font-size: 2em; 화면에서 디폴트로 보여주는 폰트의 2배

    font-family: Gulim;

    text-align: center;

}

</style>


 3) HTML문서 <head>안에 CSS파일 링크하기  매 페이지마다 head를 쓸 필요 없이 css 파일을 만들어놓고 페이지에 링크 가능

통상 css라는 확장자를 사용하여 파일 저장

#특정 태그에 css 설정 적용할 때

<link rel="stylesheet" type="text/css" href="css/style.css"> css파일이 들어있는 폴더와 파일명 


#.이름을 써서 별도의 css를 설정하여 내가 원하는 곳에 적용하려고 할 때

#.highlight는 내가 설정한 이름이며, class라고 부름 

.highlight {

 font-size:3em; 

 text-align:right;

 color: blue;

 }


<td class="highlight"> #설정한 css를 사용하고 싶은 곳의 태그 안에 class로 표시

<td class=highlight> 


반응형

챙겨먹기

아침에 일어나서 음식 재료를 챙기고 씻고 썰고 하는 나의 동작과 소리가 영화 포레스트 느낌으로 산뜻하고 부지런한 기분을 주기는 하지만, 생각보다 시간이 소모되는 편이다. 한 번은 된장찌개를 끓이다가 먹을 시간이 없을 것 같아서 위층 친구에게 가져다줘야겠다 싶었는데, 그러기에도 시간이 밭아서 직접 가져가서 먹어달라고 하고 출근했다.

그래서 다음 날 아침밥을 챙겨먹어야지 싶으면 저녁에 미리 재료를 다듬어 놓기로했다. 

음식을 해먹으면서 의외였던 점은, 고기가 생각보다 빨리 상한다는 것과 야채가 생각보다 오래 간다는 것이다. 그래서 고기는 음식이 먹고 싶은 전 날 주문하는 편이고 야채는 상시 주문한다. 친구들은 무조건 냉동실에 넣는다고 하지만, 어쩐지 그러긴 싫단 말이야.

 

  

팬케익이 먹고 싶어서 메이플 시럽을 샀었는데, 마켓컬리에서 산 일본식 팬케익이 맛이 없어서 팬케익 가루와 시럽을 짱박아두고 있었다. 그런데 최근에 크로플을 해먹으면서 시럽을 다 비웠다...! 새로운 맛을 시도해보기 위해 이번에는 바닐라향의 시럽을 구입해봤는데, 이것도 맛있다 =)    

어째 업데이트 할 것이 챙겨먹기 밖에 없는 것일까 ㅎ-

반응형


 챙겨먹기  

*

마가 위에 좋다고 해서 먹는 방법을 검색해보니- 갈아 먹는 방법이 많았지만, 그 중 굳이 명란 무침을 찾아서 반찬으로 만들어 먹었다. 

아삭하면서도 끈적한, 신기한 느낌의 마를 채썰어 명란에 무치고 파를 썰어 얹은 후에 들기름이나 참기름을 뿌리면 끝. 

명란이 짜서 다른 양념은 전혀 하지 않았다. 자극적이지 않은데 밥 한 그릇 뚝딱이다.

돼지 고기 남은 것은 파와 함께 굴소스에 살짝 볶아줌

밥 반찬은 하나 또는 두 개여도 충분한 것 같다. 하나의 반찬에도 다양한 재료가 들어가는데. 옛날에는 왜 그렇게 반차 수를 따져서 몇 첩 반상이니 뭐니 했을까. 설거지 거리도 많아지는데....ㅠ 

영양제나 간식이 없어서...? ㅋ






 허브에 물주기  

베란다에 화분 5개를 두었다. 꾸준히 케어하는 것을 잘하지 못해서 걱정했는데, 생각보다 잘 자라주고 있다. 

새싹이 나고 가지가 뻗기도 하였다. 

아침에 일어나면 물을 챙겨 마시는데, 비운 통을 바로 채워서 화분에 물을 준다. 


친구들과 수다를 떨다가, 허브를 샀다는 말에 나도 링크를 보내달라고 하여 구입하였다.

바질, 루꼴라, 세이지, 고수를 포대에 심도록 구성된 키트. >>https://m.permeal.co.kr/goods/view?no=2633

구역을 나누고 이름을 붙일 수 있도록 이름표도 들어있는데 그냥...뿌렸다...; ㅋ

고수는 특히 건조한 것을 못 견뎌서 물을 자주 줘야한다고 한 쪽에 심기는 했지만,  

첫 잎이 나오는 것을 보고 무엇인지 모르겠어서 가지런히 심은 친구에게 물어봤다. 

가장 먼저 & 잘나오는 것은 루꼴라였다! 

바질이나 루꼴라는 샐러드나 피자, 스파게티 등 다른 음식을 해먹기 위해 설레이면서 심은 것이였는데,

막상 나온 것을 보니 귀엽고 애정이 가서 먹고 싶다는 생각이 들지는 않는다 ㅋ 물론 먹을거지만!



 차 마시기  


저녁에 커피를 마셔도 자는데 지장이 없었는데, 이제는 아닌가보다 ㅠ

커피 대신 차를 마시려고 노력하고 있다.






반응형


운동 도구 하나씩 도착

마사지볼, 발란스 쿠션, 땅콩모양 짐볼, 루프 밴드






  챙겨먹기  


* 아침에 과일이나 야채 위주로 챙겨먹으려고 하지만, 요즘 애정하는 크로플은 예외를 두기로 한다.

 





* 초록 & 빨강 조합을 좋아하지만, 재료가 초록이밖에 없어서 그대로 먹었는데 맛은 여전히 좋았다

  샐러리는 맛이 없다고 느껴져서 억지로 먹을 때가 있는데 레몬 & 소금 드레싱을 뿌려서 고기류(닭가슴살 포함!ㅋ) 와 먹으면 항상 맛있다. 






  반신욕  


* 러쉬 입욕제가 너무 비싸서 대체제를 찾으려고 했는데  이번에 구입한 피치 크럼블 버블룬, 킨키 부츠,  버터베어 모두 마음에 들어서 

간혹,,,,,,,, 플렉스할 때 사야지,,,,,라는 생각 

특히 킨키 부츠는 거품이 너무 잘나서 뭉게뭉게 구름 위에 있는 것 같아서 기분 좋았다


* 반신욕의 포인트는 상체 (손, 팔, 팔꿈치 모두모두 포함)를 물에 넣지 않는 것인듯! 책이나 핸드폰을 보려고 팔꿈치가 담궈질 때가 있는데, 신경써서 바깥으로 걸치고 있을 때 땀이 훨씬 빨리, 잘나고 개운한 것 같다.




반응형




※ 학습 노트


이런 강의가 있다.


---


Data science from MIT 

 

Computer Science의 탑 1위 대학인 MIT 공대의 "Introduction to Computational Thinking and Data Science" 수업 영상 및 강의 자료를 한국어로 번역하여 여러분께 제공합니다.

해당 강좌에서는 데이터 과학이라는 분야를 시작하기 위한 알고리즘과 통계학 그리고 기계학습의 내용을 조금씩 나눠서 다루고 있으며, 프로그래밍 실습보다는 문제 해결방법 대해서 집중적으로 공부합니다. 본격적인 데이터 과학 분야에 진입하기에 앞서, 해당 분야를 배우기 위해서는 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의입니다.


---


Edwith에서 수강할 예정이지만, MIT 강의라고 하니 글로벌 플랫폼에 업로드 되어있을 것 같아 찾아보았다.

>>edX와 Youtube에 있는 듯.

(Coursera에서 the most popular 과정 중 하나인 'Python for everybody(모두를 위한 파이썬)' 도 Edwith에 한글화된 버전으로 볼 수 있다.)





* 해당 분야를 배우기 위해서 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의


학습해야할 새로운 영역들은 계속해서 생겨나는데, 

범위가 처음부터 정해져있지도 않거니와 계속해서 확장하고, 변화한다.

고등학교 때처럼 정해진 교과, 정해진 범위 내에서 체계적으로 공부하기가 어렵다.

(그때가 좋은 거였...다고 말하면 안되겠지..! ㅋ 그때는 그때만의 고통과 괴로움이 있었으니까-)


올해는 수행해야할 과제가 있어서 이것 저것 닥치는 대로 찾아보았다.

지금도 아주 초초초초보지만, 그래도 아주 처음보다는 들은 것, 본 것들이 생겼다.

학습 분야의 용어에 익숙해지는 것도 중요한 것 같다.


계속해서 업데이트하고 수정해야겠지만, 학습자만의 체계와 체크리스트를 만들어가는 것도 학습의 방법 중에 하나일 것 같아서,

조금씩 정리해보기로 했는데....



* 선수조건


1. 모두를 위한 프로그래밍: 파이썬

2. 모두를 위한 프로그래밍: 파이썬 자료구조

3. 모두를 위한 프로그래밍: 파이썬을 이용한 데이터베이스 처리

4. CS50 x edwith

5. Introduction to Computer Science and Programming in Python



그런데, 당황스럽게도 선수조건이 왜이렇게 많지...! ㅋㅋㅋ 해당 분야를 배우기 위해 어떤 것을 더 학습해야하는지 체험할 수 있는 강의라고 하여 아주아주 생초보자를 위한 것인줄 알았건만.!


다행히, 모두를 위한 프로그래밍을 학습한 후이긴하지만,

불행히, 이미 시간이 지나기도 했고, 학습을 기록해놓지를 않았기에, 

선수 조건인 과정부터 점검해보기로 하였다.


그런데 맙소사 ㅠ 내가 이미 들은 줄 알았던 과정도 '모두를 위한 프로그래밍: 파이썬' 만이다. 

갈길이 멀군



[모두를 위한 프로그래밍: 파이썬 자료구조] 부터 시작한다.

(Chapter 6~8)


*** 알아야할 것 : 타입 변환, 인덱싱, len 함수, for 루프


* len 함수 : 문자의 길이 >>>리스트가 몇 개의 항목을 가지고 있는지 확인 가능

* print(s[0:4]) - 4번째 인덱스는 읽지 않음!

  print(s[:2]) - 첫 번째나 마지막 인덱스 생략할 경우, 시작 또는 마지막까지 가정하고 반환

* strings는 object이고 object는 method라는 것을 가지고 있음

* replace (문자바꾸기)

* lstrip (왼쪽 공백 없애기), rstrip (오른쪽 공백 없애기), strip (양쪽 공백 없애기)

* startwith (시작 문자열 찾기)

* 파이썬3에서부터는 모든 내부 문자열이 유니코드 (한국어가 예시로 나온다!)

  유니코드 연산이어도 문자열로 인식. (파이썬3에서는 문자열이지만 유니코드 상수가 별개로 있었고 다른 자료형으로 인식함)

* open() 파일을 여는 것

\n >>> 다음 줄로

* read()

통상 프로그래밍은 알고리즘과 자료구조로 나눌 수 있음

   - 알고리즘: 특정 문제를 해결 하기 위한 규칙 또는 단계

   - 자료구조: 컴퓨터 내에서 자료를 구조화 하는 특별한 방식


* list(리스트)

  1. 리스트의 각 항목들은 '[]'로 둘러싸임
  2. 리스트 내의 항목들에 대한 구분은 ,(콤마)로 구분
  3. 리스트 내에 또 다른 리스트를 내포할 수 있음
  4. 비어 있는 리스트를 만들 수 있음
  5. 리스트의 항목들에 인덱스 값으로 접근 가능.
  6. 리스트의 항목들은 바뀔 수 있음


* range() >>> 인자로 전달되는 값에 따라서 숫자로 이루어진 리스트를 반환


* .list() >>> 리스트 만들기

* .append('book') >>리스트에 추가

* .sort() >>> 정렬

* .split() >>> 공백을 찾아 조각을 반환

  .split(';') >>> 세미콜론 기준으로 Split해주지 않으므로 별도 정의


* 컬렉션(collection)리스트나 딕셔너리 같은 변수를 가지는 상황. 하나의 정보보다는 여러 개의 정보를 저장할 때 사용

* 리스트(list): 순서대로 정렬한 컬렉션. 데이터를 추가하면 항상 리스트의 끝에 추가되고 0부터 n-1번 위치까지 순서대로 n개의 원소가 저장됨

딕셔너리(dictionary)

- 순서 없음. 대신 키(Key) 존재

-ooo={} 또는 dict()라는 생성자를 통해 생성

- {중괄호} 안에 Key:Value 형태로 저장


* get 함수 : 

counts.get(name,0)


>>>딕셔너리에 name이라는 키가 존재할 경우 값을 불러오고,

그렇지 않을 경우에는 딕셔너리의 name이라는 키에 0이라는 값을 갖는 데이터를 추가하라는 의미

if name in counts:

   x = counts[name]

else :

   x = 0 

 x = counts.get(name,0) 


* items 메소드

keys, values 메소드로는 딕셔너리의 키와 값의 쌍을 얻음 >>> items 메소드를 사용하면 됨

items 메소드를 실행하면 '튜플(tuple)'이라는 자료 구조 안에 키와 값이 쌍을 이루어 저장된 리스트가 반환됨


* Tuples(튜플) 리스트와 거의 비슷하지만 변경불가능(immutable), 즉 값 변경 (정렬, 값 추가, 순서 변경) 불가하다는 특성에서 차이가 있음

그러나 리스트보다 훨씬 효율적으로 작동함 (용량 적게 차지, 근 빠름)

* 내장된 함수 차이

l = list()

 dir(l)

# ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

  t = tuple()

 dir(t)

# ['count', 'index']


* sorted 함수 :  딕셔너리는 키 기준으로 정렬된 값이 나옴

반응형

학창 시절부터 사회 생활 초년생때까지의 아침은,  알람 소리에 겨우 일어나서 잠이 덜 깬 상태에서  준비하는 것으로 시작하였다.

사람은 생체 시계라는 것이 있어서 몇 시에 일어나야지, 마음 먹으면 그 시간에 눈이 떠지기도 한다는데-그렇게 알람을 맞춘 시간 언저리에 눈이 떠질때가 많았다.

30분 전에 깨면 조금이라도 더 잘 수 있는데, 10분 전이면 금방 일어나야해서 불안감에 다시 잘 수가 없고 그게 그렇게 억울했다 ㅎㅎ

 

지금 너무 좋은 점은, 알람없이 눈이 떠질 때 일어난다는 것이다.

집과 회사의 거리가 바뀌었고, 출퇴근 시간도 자유로워졌다.

 

아침 시간을 보내는 것이 좋아서 출근 시간을 9시 30분으로 설정한다.

가볍게 운동하고 먹고 싶은 것을 챙겨 먹고 여유있게 준비하는 시간이 너무 좋다.

물론 운동은 아주...가끔하지만.

 

집 한켠에 홈트 도구를 구비해두고 싶지만 먼지가 쌓일까봐 망설이다가

월요일 아침에 가벼운 스트레칭을 성공한 후 자신감을 얻고 결국 주문을 하였는데,

아직 세팅이 되지 않아^^;;; 챙겨먹는 것만 열심히 하고 있다.

 

 

  챙겨먹기  

* (4일차) 피망을 채를 썰어 참치와 버무린 후 소금, 후추를 약간 뿌려 전자렌지에 3분 돌리면 밥 한 그릇 뚝딱이라고

  냉장고에 있는 명란이 있어서 소금은 생략하고 명란을 얹어 돌림!

  참치와 피망 둘 다 보관 기간이 길다. 장볼 때 하나씩 사두면 생각날 때 먹을 수 있을 것 같다.

 

 

* (5일차) 어디선가 먹은 과일 샐러드에 대한 기억이 있는데 이거다, 싶은 레시피를 발견하지 못하였다.

  네이버에 과일 샐러드를 검색하니 마요네즈에 버무린 사라다가 나올 뿐이고. 

  구글에 fruit salad dressing을 검색하니 요거트 드레싱만 나온다. 아닌데 아닌데.

 

  기억나는 건 과일과 견과류, 달콤한 드레싱 정도라 꿀을 먼저 장만하였다.

 

  최근에 엄마집에서 가져온 과일 + 내가 먹고 싶은 과일을 주문하였더니 과일 종류가 꽤 많아져서 

  과일 샐러드를 해먹어봐야겠다는 생각이 들었다.

  배, 샤인머스켓, 감, 로메인을 넣고, 

  파마산 치즈를 사려고 들어간 마켓컬리에서 산 트러플 호두까지 넣고 꿀을 뿌려먹었다. 

 

  맛은 있었으나- 뭔가 부족해 싶어서 fruit salad dressing + honey, oil 검색하니 honey lime dressing이 나온다.

  담번에 시도해봐야지 

 

 

* (6일차) 엄마가 문어와 깍두기를 주셨다.

  원래는 문어 샐러드를 해먹으려고 했는데... 갑자기 볶음밥을 해먹어도 맛있겠다는 생각이 들었다. 

  버터가 어울릴 것 같아 버터를 녹이고 문어, 깍두기, 샐러리를 볶다가 

  (다이어터니까) 현미곤약밥을 넣어 소금 없이 볶은 후에 멸치 다대기를 얹어서 먹었다.

  어디에 내놓을 레시피는 아니지만 개인적으로는 아주 맛있었다 >-<  

 

반응형

퇴근하고 학원에 갔다가 11시 넘게 집에 왔다.

잠이 오는데 자기 싫을 때가 있다. 어제가 그랬고, 인스타 피드를 보다가 우연히 보게된 옛날 영상을 타고 들어갔다가 

고딩래퍼 이영지의 영상들을 보게 되었고...2시 넘어 잠들었다 ㅠ

 

그래서 이틀차에 벌써 많이 짧아진 아침 일상이였다 ㅠ0ㅠ

 

 

  챙겨먹기   

* 위를 위한 양배추즙, 간을 위한 리버케어, 유산균

* 아보카도, 오이, 샐러리 + 레몬, 올리브오일, 오레가노, 소금 약간

* 바나나, 키위 감, 샤인머스켓

* 커피 다 떨어진김에 건강한 레몬 밤 티

 

 

  음악 감상   

* 오늘도 조성진

 

반응형

+ Recent posts