[Pythonの]高度な機能を

スライス

1 
2
3
4
5
L [:102 ] 
#[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 、[(11)、(24)、(39)]:
プリント(x、y)は

一覧理解

リストの内包は、あなたが簡単にいくつかの処理または選択基準に基づいてリストを作成することができます。

1 
2
3
4
5
ます。myList = [X * X のためのx における範囲(111であれば、X%2!= 0 ] 
[ch.upper()のために CH '理解' なら 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
[ 0149162536496481 ]
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、B = 0 0 1 ながら N <K: プリント(b)は 、B = B + Bを N = N + 1 リターン'行わ'






DEF (MAX)
N、B = 0 0 1 ながら N <最大:収量 B#変更収率印刷、及びFIBは発電機になり 、A、B = B + Bを N = N + 1つのリターンを「行って」






>>> = FIB(F 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' 収率1枚の プリント( 'ステップ2' の収率 3 プリント( 'ステップ3' 収率 5






>>> O =奇数()
>>>次(O)
ステップ1
1
>>>次(O)
ステップ2
3
>>>次(O)
ステップ3
5
>>>次(O)
トレースバック(最新のコール最後):
ファイル"<STDIN>" 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' )、イテレータ)
トゥルー

PythonのIteratorオブジェクトは、データストリームを表すIteratorオブジェクトが可能なnext()機能を呼び出し、投げられたデータの不在になるまで次のデータを返すために引き続きStopIterationエラーが発生しました。このデータ・ストリームは、順序付けられたシーケンスとして見ることができるが、我々は唯一のを続行することができ、事前にシーケンスの長さを知ることができないnext()ので、データの関数を計算する次のデマンドを実現するIterator計算は、不活性、唯一の次のデータを返す必要がありますされていますそれが計算されます。

Iteratorでも、このようなすべての自然数などのデータ、の無限の流れを表します。使用はlist、すべての自然数を格納されません。

おすすめ

転載: www.cnblogs.com/lijianming180/p/12366611.html