[파이썬] 고급 기능

슬라이스

1 
2
3
4
5
L [: 10 : 2 ] 
# [0, 2 ,. 4 ,. 6 ,. 8
L [:: 5 ] # 숫자, 매 5가 걸릴
#을 [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
L [:] # 복사 L

순회

1 
2
위한 X, Y  [( 1 , 1 ), ( 2 , 4 ), ( 3 , 9 )] : 
인쇄 (X, Y)

목록 이해

리스트 통합은 쉽게 일부 처리 또는 선택 기준에 따라 목록을 만들 수 있습니다.

1 
2
3
4
5
으로 myList = [X * X 에 대한 X  범위 ( 1 , 11 ) 의 경우 , X % 2 ! = 0 ] 
[ch.upper () 에 대한 채널 '이해' 경우 CH 되지 에서 'AEIOU' ]

조합 = m + N 에 대한 m 'ABC' 를위한 N 에서 "XYZ" ]
# [ 'AX', 'AY', 'AZ', 'BX' ', BY', 'BZ', 'CX', ' CY ','CZ ']

발전기

Referennce : https://www.liaoxuefeng.com/wiki/1016959663602400/1017318207388128

발전기를 만들기 :

1 
2
3
4
5
6
7
8
9
10
L = [X * X 에 대한 X  범위 ( 10 )] 
L
[ 0 , 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 ]
g = (X * (X) 에 대한 X 범위 ( 10 ))
g
<오브젝트 생성기 <genexpr>에서 0x1022ef630 >
다음 (g)
0
>>> N g :
인쇄 (N)

fibbonacci을위한 발전기를 만들기 :

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DEF  (K) :  # 프린트 제 K의 fibbonacci 번호
N, A, B = 0 , 0 , 1 상태 : N <K 잉크 (b) A, B = B, A + B를 N = N + 1 로 돌아 '완료'






DEF (최대) :
N, A, B = 0 , 0 , 1 동안 N <최대 : 수율 B # 변경 수율 인쇄 및 FIB는 발전기 것 , B = B, A + B를 N = N + 1 개 반환 '끝난'






>>> F = FIB ( 6 )
>>> F
<발생기에서 오브젝트 FIB 0x104feaaa0 >

및 실행 흐름 발생기 기능은 동일하지 않다. 함수 실행 순서가 발생합니다 문 또는 문 반환합니다 함수의 마지막 줄을. 함수 발생기, 각각의 호출이된다 실행 시간, 만남의 문 반환, 다시 마지막에서 반환 된 실행 문은 실행을 계속합니다.return 大专栏  [Python] Advanced featuresnext()yieldyield

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DEF  홀수 () :
인쇄 ( '단계 1' ) 수득 인쇄 ( '단계 2' ) 의 수율 ( 3 ) 인쇄 ( '단계 3' ) 의 수율 ( 5 )






>>> O = () 홀수
>>> 다음 (O)
단계 1
1
>>> 다음 (O)
단계 2
3
>>> 다음 (O)
단계 3
5
>>> 다음 (O)
트레이스 백 (최근 통화 ) 마지막 :
파일 "<표준 입력>"1 , <모듈>
StopIteration을

118 파스칼의 삼각형

Leetcode : https://leetcode.com/problems/pascals-triangle/

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
def generate(self, numRows):
"""
:type numRows: int
:rtype: List[List[int]]
"""
def row(num):
n, prev, cur = 1, [1], [1, 1]
while n <= num:
yield prev
prev = cur
temp = [0] + prev + [0]
cur = [temp[i] + temp[i - 1] for i in range(1, len(temp))]
n += 1
return [r for r in row(numRows)]

Iterator

可以直接作用于for循环的对象统称为可迭代对象:Iterable. list, set, dict, str, tuple.

而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

All generators are Interator, not all Iterable are Iterator.(list, set, dict, str, tuple)

But we can use iter() to transform iterables into interator.

1
2
3
4
>>> isinstance (ITER ([]), 반복자) 
트루
>>> isinstance (ITER ( "ABC" ), 반복자)
트루

파이썬의 Iterator객체는 데이터 스트림을 나타내는 Iterator객체가 될 수있다 next()기능을 호출하고 던져 데이터가 없을 때까지 다음 데이터를 반환 계속 StopIteration오류가 발생했습니다. 이 데이터 스트림은 정렬 된 순서로 볼 수 있지만, 우리는 단지를 통해 계속, 사전에 순서의 길이를 알 수 없다 next()소위, 데이터 함수를 계산 다음-수요의 실현 Iterator계산 불활성 만 다음 데이터를 반환 할 필요가있다 그것은 계산됩니다.

Iterator심지어 모든 자연 번호와 같은 데이터의 무한 스트림을 나타냅니다. 사용은 list모든 자연수에 저장되지 않습니다.

추천

출처www.cnblogs.com/lijianming180/p/12366611.html