Python의 데이터 구조 및 알고리즘 적용(예제 포함)

不言
풀어 주다: 2018-12-07 17:33:19
앞으로
3477명이 탐색했습니다.

이 기사의 내용은 Python의 데이터 구조 및 알고리즘 적용에 관한 것입니다(예제 포함). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

질문 1

이제 N 요소를 포함하는 튜플이나 시퀀스가 ​​있습니다. 그 안의 값을 압축 해제하고 동시에 N 변수에 할당하는 방법은 무엇입니까?

솔루션

모든 시퀀스(반복 가능한 객체)는 간단한 할당 문을 통해 압축을 풀고 여러 변수에 할당할 수 있습니다. 전제는 변수의 수와 시퀀스 요소의 수가 일치해야 한다는 것입니다.

In [3]: p = (4,5)

In [4]: x,y = p

In [5]: x
Out[5]: 4

In [6]: y
Out[6]: 5

In [7]: data = ['ACME', 50, 91.1, (2012, 12, 21)]

In [8]: name, shares, price, date = data

In [9]: name
Out[9]: 'ACME'

In [10]: shares
Out[10]: 50

In [11]: date
Out[11]: (2012, 12, 21)
로그인 후 복사

변수 개수와 시퀀스 요소 개수가 일치하지 않으면 예외가 발생합니다.

In [12]: p = (x,5)

In [13]: a,b,c = p
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-f5a6e296606a> in <module>()
----> 1 a,b,c = p

ValueError: not enough values to unpack (expected 3, got 2)
로그인 후 복사

이 압축 해제된 할당은 목록이나 튜플뿐만 아니라 문자열, 파일 객체, 반복자 및 생성기 등 모든 반복 가능한 객체와 함께 사용할 수 있습니다.

In [14]: A = 'hello'

In [15]: a,b,c,d,e = A

In [16]: a
Out[16]: 'h'

In [17]: b
Out[17]: 'e'

In [18]: c
Out[18]: 'l'

In [19]: d
Out[19]: 'l'

In [20]: e
Out[20]: 'o'

In [21]: a,b,c,d,e
Out[21]: ('h', 'e', 'l', 'l', 'o')
로그인 후 복사

시퀀스의 일부만 압축을 풀고 일부 값을 삭제하려는 경우 불필요한 변수 이름을 사용하여 해당 위치의 시퀀스 요소를 차지하면 됩니다.

In [22]: data = [ 'ACME', 50, 91.1, (2012, 12, 21) ]

In [23]: _, shares, price, _ = data

In [24]: shares
Out[24]: 50

In [25]: price
Out[25]: 91.1
로그인 후 복사

질문 2

반복 가능한 객체의 요소 수가 변수 수를 초과하면 ValueError가 발생합니다. 그렇다면 이 반복 가능한 객체에서 N개의 요소를 어떻게 추출할 수 있을까요?

Solution

Python의 별표 표현으로 이 문제를 해결할 수 있습니다. 예를 들어, 과목을 공부하고 학기말에 숙제의 평균 성적을 계산하고 첫 번째와 마지막 성적을 제외하려고 합니다. 분수가 4개뿐이라면 그냥 수동으로 할당할 수도 있지만, 24개가 있다면 어떨까요? 별표 표현식이 유용할 때입니다.
함수 호출에서 일치는 단순히 변수 이름의 위치를 ​​기반으로 하지만 이름=값 형식을 사용하면 Python이 여전히 변수 이름을 기반으로 일치하도록 지시합니다. 이를 키워드라고 합니다. 매개변수. 호출에서 *sequence 또는 **dict를 사용하면 위치 또는 키워드 개체를 순서나 사전에 적절하게 래핑하고 별도의 단일 매개변수로 전달할 때 압축을 풀 수 있습니다.

rreee

위 내용은 Python의 데이터 구조 및 알고리즘 적용(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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