본문 바로가기

PYTHON 공부 - PY4E

PY4E: Chapter 8 Lists

8장 1부

1. 리스트 구조는 [](대괄호)로 표현된다.
2. 리스트는 위치와 순서가 정해져 있다.
3. 리스틑는 0부터 시작한다.
4. 리스트는 변형이 가능하다.
5. 스트링 자료형식은 변형이 불가능하다.
6. 리스트에 아이템을 할당할 때에는 변수가 속한 위치를 이용하여 바꿔 넣는다.
7, 리스트의 원소는 어떤 데이터 형식도 보유할 수 있다.
7. range()함수는 원하는 수의 정수형 원소를 가진 리스트를 생성할 수 있다.
8. 성능상의 차이가 없다면, 짧은 코드가 아름답다.

8장 2부
1. 리스트의 사칙연산은 해당 리스트를 변경하지 않고 새로운 변수에 연산된 값을 저장한다.
2. 리스트를 자를 때는 기억하자! "up to but not including"
3. 리스트[a:b] a부터 b-1까지
4. 리스트의 연산은 문자열에서 다뤄던 것과 거의 일치한다.
5. 값 자체를 이용하느냐 혹은 값의 위치를 이용하느냐

8장 3부
1. 문자로된 데이터를 잘라서 리스트를 만들기 위해서는 split()을 사용한다.
2. 스플릿의 기본 값은 공백(white space)이다. 
3. 글자의 위치를 찾는 것보다, 단어의 위치를 찾는 것이 리스트를 만들기에 수고가 덜한다.

 

실습


1. short cirkit valuation : 최단평가, 가디언 패턴이 먼저 오고 결과가 참이라면 뒷 문장은 확인하지 않음
2. 디버깅 할 때 문제를 분석하기 보다는, 때때로 print 구문을 넣어서, 실제로 무슨일이 벌어지고 있는지 확인하는 것이 필요

 

 

# open()은 파일 자체를 불러오는 것이 아니라, 파일을 운용할 수 있는 창구의 역할이다.
han = open('mbox-short.txt')

# han의 line에 대하여 반복문을 실행한다.
# 먼저 우측에 공백을 제거한 것을 다시 line에 넣고
# line을 공백을 구분으로 하여 단어 리스트를 만든다.
for line in han:
    line = line.rstrip()
    wds = line.split()
    
    # 이 부분은 traceback 오류를 잡아주기 위한 보장장치인데
   	# 각 산출물들을 눈으로 확인하기기 위해 print()를 넣어준 결과 아예 아무것도 없는 리스트가 발견되었었고
    # 'From'의 위치와, 리스트의 크기에 따라서 오류가 날 가능성이 있으므로 아래와 같이 조건문을 넣어준다.
    # Guardian a bit stronger
    if len(wds) < 3 or wds[0] != 'From' :
        continue
    print(wds[2])