이 기사의 내용은 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를 사용하면 위치 또는 키워드 개체를 순서나 사전에 적절하게 래핑하고 별도의 단일 매개변수로 전달할 때 압축을 풀 수 있습니다.
위 내용은 Python의 데이터 구조 및 알고리즘 적용(예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!