> 백엔드 개발 > 파이썬 튜토리얼 > 파이썬 학습 여정

파이썬 학습 여정

巴扎黑
풀어 주다: 2017-06-23 15:53:48
원래의
1241명이 탐색했습니다.

이 장에서 저자는 파이썬 데이터 모델을 간략하게 소개하며, 주로 파이썬의 몇 가지 특별한 방법을 소개합니다. 예를 들어 __len__, __getitem__입니다. 그리고 카드 프로그램을 사용하여 이러한 방법을 설명합니다

먼저 Tuple과 nametuple의 차이점을 소개하겠습니다.

Nametuple은 tuple과 유사한 데이터 유형입니다. 인덱스를 사용하여 데이터에 액세스할 수 있을 뿐만 아니라 편리한 속성 이름을 사용하여 데이터에 액세스할 수도 있습니다.

전통적인 튜플 액세스는 다음과 같습니다. 각 요소에 대한 액세스는 인덱스를 통해 찾아야 합니다. 이 찾기 방법은 매우 비직관적입니다. .py", line 17, in

t1.age+=1

AttributeError: can't set attribute

살펴보겠습니다. 책에 나오는 플레잉 카드 예제는 다음과 같습니다.

tup1=(,,)
tup1[1]
로그인 후 복사
tup2=namedtuple(,[,,])
t1=tup2(,,)
t1
t1.age
t1.height
t1.name
로그인 후 복사

먼저 카드 튜플 Card가 정의되고, Rank는 카드 번호를 나타내고, Suit는 카드 슈트를 나타냅니다. 그런 다음 FrenchDeck은 먼저 순위와 슈트의 구체적인 의미를 정의합니다. __init__에서 self._cards를 초기화합니다.

__len__은 self._cards의 길이를 피드백합니다. __getitem__은 특정 카드 값을 반환합니다.

결과는 카드의 길이가 52이고, 여기서 Deck[1]은 Card(rank='3',suit='spades')

실제로 len(deck)인 것을 볼 수 있습니다. __len__ 메소드를 호출합니다. Deck[1]은 __getitem__

을 호출합니다. __getitem__ 메서드로 인해 다음과 같이 반복 액세스도 수행할 수 있습니다.

得到结果如下,namedtupel中tuple2是类型名,name,age,height是属性名字
로그인 후 복사

반복 가능하므로 무작위 거래 메커니즘을 시뮬레이션할 수 있습니다.

从上面的访问可以看到,直接用t1.age的方法访问更加直观。当然也可以用索引比如t1[0]的方法来访问
로그인 후 복사
t t1:
    t
로그인 후 복사

결과 얻기:

Card(rank='9',suit='hearts')

벡터 연산에 대한 또 다른 예를 살펴보겠습니다. 예를 들어 벡터 1의 벡터1(1,2)과 벡터 2의 벡터2(3,4)가 있습니다. 그러면 벡터1+벡터2의 결과는 (4,6)이 되어야 합니다. Vector1과 vector2는 모두 벡터입니다. 작업을 구현하는 방법은 무엇입니까? 메소드는 __add__, __mul__

코드는 다음과 같습니다.

和元组一样,namedtupel中的元素也是不可变更的。如果执行t1.age+=1。将会提示无法设置元素
로그인 후 복사
collections namedtuple

Card=namedtuple(,[,])

FrenchDeck:
    ranks=[str(n) n range(2,11)] + list()
    suits=.split()
    __init__(self):
        self._cards=[Card(rank,suit) suit self.suits
로그인 후 복사
연산 결과는 다음과 같습니다.

여기서 __add__, __mul__, __abs__는 각각 벡터 덧셈, 곱셈, 모듈러스 연산을 구현합니다.

__repr__ 방법을 언급할 가치가 있습니다. 이 메소드는 객체를 인쇄해야 할 때 호출됩니다. 예를 들어 벡터(1,2)를 인쇄하면 벡터(1,2)가 됩니다. 그렇지 않으면 개체를 나타내는 문자열입니다: <0x0000의 벡터 개체> __repr__과 __str__의 기능은 비슷합니다

rank self.ranks]
    __len__(self):
        len(self._cards)
    __getitem__(self, position):
        self._cards[position]

__name__==:
    deck=FrenchDeck()
    len(deck)
    deck[1]
로그인 후 복사

위 내용은 파이썬 학습 여정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿