제2 장 목록 과 원 조

8495 단어
시퀀스 개관
Python 에서 가장 기본 적 인 데이터 구 조 는 시퀀스 (sequence) 입 니 다.서열 은 모두 6 가지 유형 이 있 는데 본 장 은 두 가지 만 중점적으로 토론 한다. 목록 과 원 조 이다.이 장의 대체적인 구 조 는 다음 과 같다.
  • 유 니 버 설 시퀀스 작업
  • 리스트
  • 원조
  • 유 니 버 설 시퀀스 조작
    모든 서열 은 특정한 조작 을 할 수 있 고 Python 은 길 이 를 계산 하고 최대 와 최소 요 소 를 찾 는 등 기능 을 가 진 내부 건설 방법 도 가지 고 있다.
    인덱스
    서열 의 모든 요 소 는 번 호 를 가 진 것 이 고 0 은 첫 번 째 부터 시작 하 는 것 을 나타 내 며 - 1 은 마지막 부터 시작 하 는 것 을 나타 낸다.문자열 은 문자 로 구 성 된 시퀀스 입 니 다:
    >>> greeting = "Hello"
    >>> greeting[0]
    'H'
    >>> "Hello"[-1]
    'o'   
    

    이어서 이 책의 실례 는 작은 프로그램 을 주 었 다.연습 개인 으로 간단하게 요 구 를 추상 화 할 수 있 습 니 다. 만약 당신 도 나 처럼 방금 입문 했다 면 Python 은 스스로 편집 해 볼 수 있 습 니 다.
    사용자 에 게 년, 월 (1 - 12), 일 (1 - 31) 을 입력 하고 모양 에 따라: September 12th, 2014 의 형식 으로 구 축 된 문자열 을 출력 하도록 요구 합 니 다.
    다음은 자신 이 구축 한 코드 와 해당 하 는 입 출력 결과 입 니 다.
    year = raw_input("Year:")
    month = raw_input("Month(1-12):")
    day = raw_input("Day(1-31):")
    
    monthes = [
        "January",
        "February",
        "March",
        "April",
        "Ma",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
    ]
    #                    
    days = ['st', 'rd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th', 'th'];
    
    print monthes[int(month) - 1] + ' ' + day + days[int(day) - 1] + ',' + year
    

    실행 하면 다음 과 같은 결 과 를 볼 수 있 습 니 다.
    $ python sequencePractise.py
    Year:2015
    Month(1-12):1
    Day(1-31):5
    January 5th,2015
    

    튜 토리 얼 의 코드 에 비해 개선 할 수 있 는 것 이 있 습 니 다 (1) 영어 표현 습관 에서 1 - 3 의 접 두 사 는 st, nd, rd 이 고 나머지 는 th 입 니 다.예 를 들 어 1st, 12nd, 23rd, 15th.(2) 아직 학습 지점 (if else) 이 없 기 때문에 31 길이 의 원 그룹 을 접미사 로 사용 합 니 다.Python 에서 배열 의 조합 을 사용 할 수 있 습 니 다. (자바 와 자바 스 크 립 트 에 비해 신선 한 것 입 니 다) 다음 과 같 습 니 다. days = ['st', 'nd', 'rd'] + 7*['th']+['st', 'nd', 'rd'] + 7*['th']+['st', 'nd', 'rd'] + 7*['th']+['st'] + ['st']조각 을 나누다
    쉽게 말 하면 시작 색인 을 지정 하고 색인 을 끝 낸 다음 에 하위 서열 을 얻 는 작업 입 니 다.Python 이 제공 하 는 분할 작업 이 매우 유연 하기 때문에 하나의 소개 가 번 거 롭 지 않 습 니 다. 아래 에 책 속 의 예 를 열거 하 겠 습 니 다.먼저 입력 을 보고 출력 을 추측 한 다음 에 실제 조작 하거나 결 과 를 보고 증명 할 수 있 습 니 다.
    > numbers = [1,2,3,4,5,6,7,8,9,10]
    > numbers[3:6]   
    [4, 5, 6] #     6        
    
    > numbers[-3:-1]  
    [8, 9]
    
    > numbers[-3:0]   
    [] #                  
    
    > numbers[-3:] 
    [8,9,10]
    
    > numbers[:-3] 
    [1,2,3,4,5,6,7]
    
    > numbers[:] 
    [1,2,3,4,5,6,7,8,9,10] #            
    
    > numbers[0:10:2] 
    [1, 3, 5, 7, 9]#        
    
    > numbers[8:3:-1]  
    [9, 8, 7, 6, 5]#       ,         
    
    > numbers[0:10:-2] 
    []
    
    > numbers[8::-2] 
    [9, 7, 5, 3, 1]
    > numbers[5::-2] 
    [6, 4, 2]
    > numbers[:5:-2] 
    [10,8]
    #                       ,                 。
        :                。
    

    서열 더하기
    > [1,2,3]+[4,5,6]  
    [1, 2, 3, 4, 5, 6]
    
    > "Hello" + " World" 
    "Hello World"
    
    > "Hello" + [1,2,3]  
    #  :error,       ,            
    

    곱셈
    숫자 곱 하기 서열 은 새로운 서열 을 만 들 고 새로운 서열 에서 원래 의 내용 이 몇 번 반복 된다.
    > "Python"*3
    "PythonPythonPython"
    
    > [42]*5
    [42, 42, 42, 42, 42]
    

    멤버 포함 여부
    in 연산 자 를 사용 하면 시퀀스 에 포함 되 어 있 는 지 확인 할 수 있 습 니 다: > permission = 'rw' > 'w' in permission True
    > users = ['admin', 'root']
    > raw_input('Enter your name:') in users
    Enter your name:admin
    True
    

    길이, 최소 값, 최대 값
    >>> numbers = [823, 428, 105]
    >>> len(numbers)
    3
    >>> max(numbers)
    823
    >>> min(numbers)
    105
    >>> max(6,3,9,5)
    9 #max、min                 
    

    리스트
    목록 은 가 변 적 이 고 유용 하고 전문 적 인 방법 이 많다.
    list 함수
    함 수 는 문자열 만 사용 할 수 있 는 것 이 아니 라 모든 종류의 시퀀스 를 사용 할 수 있 습 니 다.다음 문자열 에 따라 목록 을 만 드 는 예:
    >>> list("Hello")
    ['H', 'e', 'l', 'l', 'o']
    

    기본 목록 작업
    목록 은 시퀀스 의 하나 입 니 다. 모든 시퀀스 의 작업 은 목록 에 사 용 됩 니 다. 목록 이 바 뀔 수 있 는 것 과 달리 이 부분 은 목록 을 바 꾸 는 방법 을 소개 합 니 다. 요소 할당, 요소 삭제, 블록 할당, 목록 방법 (모든 목록 방법 이 목록 을 바 꿀 수 있 는 것 은 아 닙 니 다).
  • 요소 할당
  • >>> x=[1,1,1]
    >>> x[1]=2
    >>> x
    [1, 2, 1]
    
  • 원소 삭제
  • >>> names = ['John', 'Swift', 'Skylar']
    >>> del names[1]
    >>> names
    ['John', 'Skylar']
    
  • 절편 할당
  • >>> name = list('Perl')
    >>> name[2:] = list('ar')
    >>> name
    ['P', 'e', 'a', 'r']
    
    >>> name = list('Perl')
    >>> name[1:] = list('ython')
    >>> name
    ['P', 'y', 't', 'h', 'o', 'n']
    #                    。
    
    >>> numbers = [1,5]
    >>> numbers[1:1] = [2,3,4]
    >>> numbers
    [1, 2, 3, 4, 5]
    #             
    
    >>> numbers = [1,2,3,4,5]
    >>> numbers[1:4]=[]
    >>> numbers
    [1, 5]
    #            。      、         。
    

    목록 방법
  • append
  • > [1,2,3].append(4)
    [1,2,3,4]
    
  • count
  • > ['to', 'be', 'or', 'not', 'to', 'be'].count('to')
    2
    
  • extend
  • a = [1, 2, 3]
    b = [4, 5, 6]
    a.extend(b)
    a
    [1, 2, 3, 4, 5, 6]
    #    a     ,       a+b   。
    

    물론 이 방법 은 다음 과 같은 두 가지 대체 방법 이 있 을 수 있다.
    > a = a + b
    > a[len(a):] =  b
    
  • index
  • ['to', 'be', 'or', 'not', 'to', 'be'].index('or')
    2
    
  • insert
  • >>> numbers = [1, 2, 3, 4]
    >>> numbers.insert(2, 'three')
    >>> numbers
    [1, 2, 'three', 3, 4]
    

    위의 조작 도 절편 조작 과 같다.
    >>> numbers[3:3]=['three']
    
  • pop
  • >>> numbers = [1,2,3]
    >>> numbers.pop()
    3
    >>> numbers
    [1, 2]
    

    스 택 이라는 구 조 를 실현 하면 결합 하여 사용 할 수 있 습 니 다 (append 와 pop 이라는 두 가지 방법 으로 이 루어 집 니 다).대기 열 을 실현 하면 pop 과 append 에 0 으로 표 시 된 아래 표 시 를 첫 번 째 매개 변수 로 추가 할 수 있 습 니 다.
  • remove
  • >>> x = ['to', 'be', 'or', 'not', 'to', 'be']
    >>> x.remove('be')
    >>> x
    ['to', 'or', 'not', 'to', 'be']
    

    위 에서 제거 한 것 이 첫 번 째 일치 항목 입 니 다.
  • reverse
  • >>> x = [1, 2, 3]
    >>> x.reverse()
    >>> x
    [3, 2, 1]
    
  • sort
  • >>> x = [4,7,2,1,7,9]
    >>> x.sort()
    >>> x
    [1, 2, 4, 7, 7, 9]
    

    이 책 은 위 와 같은 절대 다수의 방법 에서 (1) 값 을 되 돌려 줄 지 (2) 목록 자 체 를 바 꿀 지 여 부 를 언급 했다.개인 적 으로 사용 경험 이 부족 하기 전에 이런 것들 을 기억 하 는 것 은 실제 적 인 의미 가 없다 고 생각 합 니 다. 진정 으로 사용 할 때 명령 행 을 통 해 간단 한 테스트 를 하면 알 수 있 습 니 다.
  • 고급 정렬
  • 자신 이 정의 한 규칙 에 따라 목록 을 정렬 하려 면 copare 방법 을 sort 에 전달 해 야 합 니 다. sort 는 기본적으로 내장 함수 cmp (반환 1 보다 크 고 반환 - 1 보다 작 으 면 0 으로 돌아 가 는 것 과 같 습 니 다) 를 사용 합 니 다.여기 서 는 잠시 상세 하 게 서술 하지 않 겠 습 니 다. 원 리 는 자바 와 같 을 것 입 니 다.
    >cmp(94, 39)
    1
    

    원본 그룹: 가 변 시퀀스
    다음 과 같이 원 그룹의 상용 표현법 이 나 왔 습 니 다.
    >1, 2, 3
    (1, 2, 3)
    >(1, 2, 3)
    (1, 2, 3)
    >()
    ()
    > 42,
    (42,)
    > (42,) * 3
    (42, 42, 42)
    

    tuple 함수
    tuple 은 시퀀스 를 원 그룹 으로 바 꾸 는 함수 로 목록 의 전체 list 와 유사 합 니 다.
    >>> tuple([1,2,3])
    (1, 2, 3)
    >>> tuple('hello')
    ('h', 'e', 'l', 'l', 'o')
    

    모듈 기본 동작
    생 성, 접근, 절편 작업 은 모두 목록 과 유사 합 니 다.
    원조 존재의 의미
    일반적으로 목록 은 절대 다수의 수 요 를 만족 시 킬 수 있다.책 에서 언급 한 원조 존재의 의 미 는 아직 깊이 체득 되 지 않 아 잠시 상관 하지 않 는 다.

    좋은 웹페이지 즐겨찾기