Python 언어의 꼭 봐야 할 기능과 기술 30가지(3)

高洛峰
풀어 주다: 2017-03-17 16:44:01
원래의
1219명이 탐색했습니다.

Python을 배우기 시작한 이후로 나는 자주 사용하는 "트릭" 목록을 유지하기로 결정했습니다. "멋지네요!"라고 생각하게 만드는 코드를 볼 때마다(예: StackOverflow, 오픈 소스 소프트웨어 등에서) 이해할 때까지 시도한 다음 목록에 추가합니다. . 이 게시물은 정리된 목록의 일부입니다. 숙련된 Python 프로그래머라면 이미 알고 있는 내용도 있지만 모르는 내용을 발견할 수도 있습니다. Python을 배우거나 프로그래밍을 이제 막 배우기 시작한 C, C++ 또는 Java 프로그래머라면 나처럼 이들 중 많은 부분이 매우 유용하다는 것을 알게 될 것입니다.

각각의 트릭이나 언어적 특징은 과도한 설명 없이 예시로만 확인할 수 있습니다. 예제를 명확하게 설명하려고 노력했지만 익숙함에 따라 일부 예제는 여전히 약간 복잡해 보일 수 있습니다. 따라서 예제를 읽은 후에도 여전히 명확하지 않은 경우 제목은 Google을 통해 자세한 내용을 얻는 데 충분한 정보를 제공할 수 있습니다.

목록은 난이도별로 정렬되어 있으며 일반적으로 사용되는 언어 기능과 기술이 앞에 있습니다.

1.30 최대 및 최소 요소(heapq.nlargest 및 heapq.nsmallest)

>>> a = [random.randint(0, 100) ) for x범위(100)]

>>> heapq.nsmallest(5, a)

[3, 3 , 5, 6, 8]

>>> heapq.nlargest(5, a)

[100, 100, 99, 98, 98]

1.31 itertools.product([1, 2, 3], [4, 5])의 p에 대한 데카르트 곱(itertools.product)

>>> 1, 4)

(1, 5)

(2, 4)

(2, 5)

(3, 4)

(3, 5)

>>> for p in itertools.product([0, 1], 반복=4):

...

print

''.join(str(x) for x in p) ...

0000

0001

0010

0011

0100

0101

0110 🎜 >

1010

1011

1100

1101

1110

1111

1.32 조합 및 대체 조합(itertools.combinations 및 itertools.combinations_with_replacement)

>>> ; for c in itertools.combinations([1, 2, 3, 4, 5], 3):

... print ''.join(str(x) for x in c)

...

123

124

125

134

135

145

234

235

245

345

>>> 3], 2):

... print ''.join(str(x) for x in c)

...

11

12

13

22

23

33

1.33 정렬(itertools.permutations)

>>> for p in itertools.permutations([1, 2, 3, 4]):

... print ''.join(str(x) for x in p)

...

1234

1243

1324

1342

1423

1432

2134

2143

2314

2341

2413

2431

3124

3142

3214

3241

3412

3421

4123

4132

4213

4231

4312

4321

1.34 링크 반복(itertools.chain)

>>> ; a = [1, 2, 3, 4]

>>> for itertools.chain(itertools.combinations(a, 2), itertools.combinations(a, 3)):

... 인쇄 p

...

( 1, 2)

(1, 3)

(1 , 4)

(2, 3)

(2, 4)

(3, 4)

(1, 2, 3)

(1, 2, 4)

(1, 3, 4)

(2, 3, 4)

>>> itertools.chain.from_iterable의 하위 집합(itertools.combinations(a, n) for n in range(len(a) + 1))

... 하위 집합 인쇄

...

()

(1,)

(2, )

(3,)

(4,)

(1, 2)

(1, 3)

( 1, 4)

(2, 3)

(2 , 4)

(3, 4)

(1, 2, 3)

(1, 2, 4)

(1, 3) , 4)

(2, 3, 4)

(1, 2, 3, 4)

1.35 주어진 값으로 행 그룹화(itertools.groupby)

>>> from import itemgetter

>>> import itertools

>>> open('contactlenses.csv', 'r')을 infile로 사용:  

...     data = [line.strip().split(',') for line in infile]  

...  

>>> 데이터 = 데이터[1:]  

>>> def print_data(rows):  

...     행의 행에 대해 print 'n'.join('t'.join('{: <16}'.format(s) for s in row) )  

...  

 

>>> print_data(data)  

젊은               근시                   아니오                    감소                 없음  

젊음              근시                   아니요                      보통                  부드러운  

젊은               근시                   예                    감소됨                 없음  

젊은               근시                   예                     보통                힘들다  

젊은               하이퍼메트로프            아니요                      감소                 없음  

젊은               하이퍼메트로프           아니요                  보통                  부드러운  

젊은               하이퍼메트로프            예                     감소                없음  

젊은               하이퍼메트로프            예                     보통                  어려움  

미리- 노안      근시                   아니요                      감소                 없음  

노안 전      근시                  아니요                      정상                  약한  

노안 전      근시                   예                     감소됨                없음  

노안 전 환자      근시                   예                     정상                  어려움  

노안 전      원시 원시            아니요                      감소                 없음  

노안 전      원시 원시            아니요    

노안 전      hypermetrope            예                     정상                  없음  

노안          근시                   아니요                      감소                 없음  

노안          근시      없음    축소됨                 없음  

노안          근시                   예                     정상                  어려움  

노안          초근시            아니요 감소된                 없음  

노안          과시            아니요                      보통                 연약한  

byopic          hypermetrope            yes                     감소                 없음  

노안          hypermetrope            예                    정상                  없음  

 

>> ;> data.sort(key=itemgetter(-1))  

>>> 값의 경우 itertools.groupby(data,lambda r: r[-1])의 그룹화:  

...     print '------------' 

...     print '그룹:' + 값  

...     print_data(group)  

...  

------------  

그룹: 딱딱함  

어린               근시                 예                     보통                  어려움  

젊음              하이퍼메트로프            예                     정상                  단단함  

노안 전      근시                   예                  정상                  딱딱함  

노안 근시                   네                     보통                  어려움  

----------  

그룹: 없음  

젊음          예 감소됨                 없음  

젊음               하이퍼메트로프            아니요                      감소                 없음  

젊음  >

노안 전      근시                   아니요                      감소                 없음  

노안 전      근시                  예                     감소됨                 없음  

노안 전      고근시            아니요                      감소      

노안 전      고근시            예                     정상                  없음  

노안          근시                  아니요                      감소                 없음  

노안          근시                   아니요                

노안          고근시            아니요                      감소                 없음  

노안          고시           예 s                     축소됨                 없음  

노안          초과시            예                   정상               없음  

------------  

그룹: 부드러운  

젊은               근시안적                   없음                    보통                  부드러운  

젊은              하이퍼메트로프            아니요                      정상                  연성  

노안 전      근시                   아니오                   정상                  부드러운  

노안 전      과대근시            아니요 정상                  연성  

노안          과시            아니오                      정상                  연성 

위 내용은 Python 언어의 꼭 봐야 할 기능과 기술 30가지(3)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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