python 학습 노트 - 기초 편 계속

6780 단어
리스트
list 는 질서정연 한 항목 을 처리 하 는 데이터 구조 로 목록 에 서열 을 저장 할 수 있 는 항목 입 니 다.목록 은 가 변 적 인 데이터 형식 입 니 다.
shoplist = ['apple','amngo','carrot','banana']

list 의 주요 방법 은:
  • len()
  • append (): 목록 끝 에 항목 추가
  • sort()

  • list 와 tuple - 원 그룹
    list 끝의 요 소 를 삭제 하려 면 pop() 지정 한 위치의 요 소 를 삭제 하려 면 pop(i) 방법 을 사용 하 십시오. 그 중에서 i 은 색인 위치 에 있 는 또 다른 서열 표 는 원 그룹: tuple 입 니 다.tuple 은 list 와 매우 유사 하지만 tuple 은 초기 화 되면 수정 할 수 없습니다.classmate = ('Michael','Bob','Tracy') 한 요소 만 있 는 tuple 을 정의 하면: t = (1,)원본 그룹 에서 가장 많이 사용 되 는 곳 은 출력 에 사 용 됩 니 다:
    #!/usr/bin/python
    # Filename: print_tuple.py
    age = 22
    name = 'Swaroop'
    print '%s is %d years old' % (name, age)
    print 'Why is %s playing with that python?' % name
    

    결과:
    $ python print_tuple.py
    Swaroop is 22 years old
    Why is Swaroop playing with that python?
    

    print 문 구 는% 기호 에 따 른 항목 원본 문자열 을 사용 할 수 있 습 니 다.
    사전 - dict
    names = {'Michael':95,'Bob':75,'Tracy':85}
    for name, address in names.items():#       
        print '%s is %d years old.' %(name, address)
    

    실현 원리: 이름 을 지정 합 니 다. 예 를 들 어 Michael, dict 는 내부 에서 Michael 에 대응 하 는 저장 성적 의 '페이지' 를 직접 계산 할 수 있 습 니 다. 즉, 95 라 는 숫자 에 저 장 된 메모리 주 소 를 직접 꺼 내 서 속도 가 매우 빠 릅 니 다.함수: 함수 명 은 사실 함수 대상 을 가리 키 는 인용 입 니 다. 함수 명 을 하나의 변수 에 부여 할 수 있 습 니 다. 이 함수 에 '별명' 을 붙 인 것 과 같 습 니 다.
    a = abs #  a  abs  
    a(-1)   #       a  abs  
    

    빈 함수:
    def nop():
        pass
    

    Python 의 반환 다 중 값 은 사실 tuple 을 되 돌려 주 는 것 입 니 다.
    기본 매개 변수
    def add_end(L = []):
        L.append("END")
        return L
    b = add_end()
    print b
    c = add_end()
    print c
    

    결과:
    ['END']
    ['END','END']
    

    왜 이러 지?Python 함수 가 정의 되 었 을 때 기본 매개 변수 L 는 계산 되 었 습 니 다. 즉 [] 기본 매개 변수 L 도 하나의 변수 이기 때문에 대상 [] 을 가리 키 고 이 함 수 를 호출 할 때마다 L 내용 이 바 뀌 면 다음 호출 시 기본 매개 변수의 내용 이 바 뀌 어 함수 정의 [] 가 아 닙 니 다.기본 매개 변 수 를 정의 할 때: 기본 매개 변 수 는 변 하지 않 는 대상 을 가 리 켜 야 합 니 다.개선:
    def add_end2(L = None):
        if L is None:
            L = []
        L.append('END')
        return L
    
    d = add_end2()
    print d
    e = add_end2()
    print e
    

    결과:
    ['END']
    ['END']
    

    역귀 함수
    def fact(n): 
        if n == 1:
            return 1 
        return n*fact(n-1) 
    print fact(100) 
    

    이렇게 계산 할 수 있 습 니 다 fact(n) = 1 × 2 × 3 × ... × (n-1) × n 재 귀 함 수 를 사용 하여 스 택 이 넘 치 는 것 을 방지 해 야 합 니 다.컴퓨터 에서 함수 호출 은 스 택 (stack) 이라는 데이터 구 조 를 통 해 이 루어 집 니 다. 한 함수 호출 에 들 어 갈 때마다 스 택 프레임 을 추가 하고 함수 가 돌아 올 때마다 스 택 프레임 을 한 층 줄 입 니 다.스 택 의 크기 가 무한 한 것 이 아니 기 때문에 재 귀적 호출 횟수 가 너무 많 으 면 넘 칠 수 있 습 니 다.해결 방법: 끝 재 귀 최적화 는 함수 가 돌아 올 때 함수 자 체 를 호출 하고 return 문 구 는 표현 식 을 포함 하지 못 하 는 것 을 말한다.이렇게 하면 컴 파일 러 나 해석 기 는 꼬리 재 귀 를 최적화 시 켜 재 귀 자 체 를 몇 번 호출 하 든 하나의 스 택 프레임 만 차지 하고 스 택 이 넘 치 는 상황 이 발생 하지 않도록 할 수 있다.
    def fact2(n):
        return fact_iter(n,1)
    
    def fact_iter(num,product):
        if num == 1:
            return product
        return fact_iter(num - 1,num * product)
    

    문자열 방법
    startwith 방법 은 문자열 이 주어진 문자열 로 시작 되 는 지 시험 하 는 데 사 용 됩 니 다.in 연산 자 는 주어진 문자열 이 다른 문자열 의 일부분 인지 확인 하 는 데 사 용 됩 니 다.find 방법 은 주어진 문자열 이 다른 문자열 에 있 는 위 치 를 찾 는 데 사 용 됩 니 다.
    고급 특성
    목록, 원본, 문자열 은 모두 시퀀스 입 니 다.서열 의 두 가지 주요 특징 은:
  • 색인 연산 자: 시퀀스 에서 항목 하 나 를 캡 처 할 수 있 습 니 다
  • 절편 연산 자: 우 리 는 서열 의 절편, 즉 일부 서열 을 얻 을 수 있 습 니 다.

  • 슬라이스
    list 나 tuple 의 일부 요 소 를 가 져 오 는 것 은 흔 한 작업 입 니 다.list: 목록 L 이 있다 면 L = []L[0:3] 색인 0 부터 찾 아 색인 3 까지 는 알 지만 색인 3 은 포함 되 지 않 는 다 고 밝 혔 다.L[:10:2] 앞의 10 개 수 치 를 나타 내 고 두 개 당 하 나 를 취한 다.L[::5] 모든 값, 다섯 개 당 하나씩
    tuple:
    (0,1,2,3,4,5)[:3]
    (0,1,2)
    

    문자열:
    'abcdefg'[:3]
    'abc'
    'ABCDEFG'[::2]
    'ACEG'
    

    번복
    dict:
    for key in d                #  ,  key
    for value in d.itervalues() #  value
    for k,v in d.iteritems()    #    key value
    

    대상 이 교체 할 수 있 는 지 판단 하기:
    from collections import Iterable
    isinstance('abc',Iterable)       #  str      
    
    enumrate 함수: list 를 색인 으로 바 꿀 수 있 습 니 다. - 요소 맞아요.
    for i, value in enumrate(['a','b','c']):
        print i,value
    

    목록 생 성식 생 성 [1×1,2×2, ... ,10×10] 어떻게?
    >>>[x*x for x in range(1,11)]
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    

    2 층 순환 으로 전체 배열 생 성:
    >>> [m + n for n in 'abc'for m in 'def']
    ['da', 'ea', 'fa', 'db', 'eb', 'fb', 'dc', 'ec', 'fc']
    

    현재 디 렉 터 리 에 있 는 모든 파일 과 디 렉 터 리 이름 을 보 여 줍 니 다:
    >>> import os
    >>> [d for d in os.listdir('.')]
    ['DLLs', 'Doc', 'helloworld.py', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'Scripts', 'tcl', 'Tools', 'var.py', 'w9xpopen.exe']
    

    목록 생 성식 은 두 개의 변 수 를 사용 하여 list 를 생 성 할 수 있 습 니 다.
    >>> d = {'x':'A','y':'B','z':'C'}
    >>> [k+'='+v for k,v in d.iteritems()]
    ['y=B', 'x=A', 'z=C']
    

    list 의 모든 문자열 을 소문 자로 바 꿉 니 다:
    >>> L = ['Hello','World','IBM','Apple']
    >>> [s.lower() for s in L]
    ['hello', 'world', 'ibm', 'apple']
    

    생 성 기 는 python 에서 순환 하면 서 계산 하 는 메커니즘 을 생 성기 (Generator) 라 고 합 니 다.
    >>> g= (x*x for x in range(1,10))
    >>> g
     at 0x0299DCD8
    >>> g.next()
    1
    >>> g.next()
    4
    >>> g.next()
    9
    >>> g.next()
    16
    >>> g.next()
    25
    >>> g.next()
    36
    >>> g.next()
    49
    >>> g.next()
    64
    >>> g.next()
    81
    >>> g.next()
    Traceback (most recent call last):
      File "", line 1, in 
    StopIteration
    

    피 보 나치 수열 의 앞 N 개 수 를 출력 합 니 다:
    def fib(max):
        n, a, b = 0, 0, 1
        while n < max:
            print b
            a ,b = b, a+ b
            n = n + 1
    
    fib(6)
    

    좋은 웹페이지 즐겨찾기