反復器
4618 ワード
zip()関数は、反復可能なオブジェクトをパラメータとして使用し、オブジェクト内の対応する要素を1つのメタグループにパッケージ化し、これらのメタグループからなるオブジェクトを返すメリットがあります.これにより、メモリを節約できます.リスト()変換を使用してリストを出力できます.
各反復器の要素の数が一致しない場合は、リストの長さが最も短いオブジェクトと同じに戻ります.*記号オペレータを使用して、メタグループをリストに解凍できます.
set()関数
無秩序な重複しない要素セットを作成し、関係テストを行い、重複データを削除したり、交差、差セット、並列セットなどを計算したりすることができます.
反復はPythonの最も強力な機能の一つであり、集合要素にアクセスする方法である.反復器は、遍歴の位置を記憶できるオブジェクトです.
反復オブジェクトは、すべての要素がアクセスされるまで、コレクションの最初の要素からアクセスを開始します.反復器は前に進むしか後退しない.
反復器には2つの基本的な方法がある:iter()とnext().
文字列、リスト、またはタプルオブジェクトを使用して、反復器を作成できます.
List=[1,2,3,4]it=iter(list)#反復器オブジェクトprint(next(it)#出力反復器の次の要素1 print(next(it)#2 for x in it:#for後に反復器を加え、その値print(x)を順次取得
反復器を作成してクラスを反復器として使用するには、クラスで2つの方法を実装する必要があります.iter__()と_next__() .
オブジェクト向けのプログラミングを知っていれば、クラスにはコンストラクション関数があり、Pythonのコンストラクション関数は_init__()は、オブジェクトの初期化時に実行されます.
__iter__()メソッドは、__を実装した特殊な反復オブジェクトを返します.next__()メソッドは、StopIteration例外によって反復の完了を識別します.
__next__()メソッドは、次の反復オブジェクトを返します.
数値を返す反復器を作成します.初期値は1で、1ずつ増加します.
ジェネレータPythonではyieldを用いた関数をジェネレータ(Generator)と呼ぶ.
通常の関数とは異なり、ジェネレータは反復操作にのみ使用できる反復器を返す関数であり、ジェネレータが反復器であることをより簡単に理解します.
ジェネレータの実行を呼び出すと、yieldに遭遇するたびに関数が一時停止し、現在のすべての実行情報が保存されます.
yieldの値を返し、次のnext()メソッドの実行時に現在の位置から実行を続行します.ジェネレータ関数を呼び出し、反復オブジェクトを返します.
次の例では、yieldを使用してフィボナッチ数列を実装します.
各反復器の要素の数が一致しない場合は、リストの長さが最も短いオブジェクトと同じに戻ります.*記号オペレータを使用して、メタグループをリストに解凍できます.
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
#
p = zip(a,b) #
list(p) # list()
Out: [(1, 4), (2, 5), (3, 6)]
list(zip(a, c)) #
Out: [(1, 4), (2, 5), (3, 6)]
# zip ,zip(*) ,
a1 ,a2 = zip(*zip(a,b))
list(a1)
Out: [1, 2, 3]
strs = ["flower","flow","flight"]
tmp = zip(*strs)
next(tmp) # ('f', 'f', 'f')
next(tmp) # ('l', 'l', 'l')
set()関数
無秩序な重複しない要素セットを作成し、関係テストを行い、重複データを削除したり、交差、差セット、並列セットなどを計算したりすることができます.
tmp = ['s','s','l']
set(tmp)
Out[25]: {'l', 's'}
x = set('runoob')
y = set('google')
Out : set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) #
x & y # set(['o'])
x | y # set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
x - y # set(['r', 'b', 'u', 'n'])
反復はPythonの最も強力な機能の一つであり、集合要素にアクセスする方法である.反復器は、遍歴の位置を記憶できるオブジェクトです.
反復オブジェクトは、すべての要素がアクセスされるまで、コレクションの最初の要素からアクセスを開始します.反復器は前に進むしか後退しない.
反復器には2つの基本的な方法がある:iter()とnext().
文字列、リスト、またはタプルオブジェクトを使用して、反復器を作成できます.
List=[1,2,3,4]it=iter(list)#反復器オブジェクトprint(next(it)#出力反復器の次の要素1 print(next(it)#2 for x in it:#for後に反復器を加え、その値print(x)を順次取得
反復器を作成してクラスを反復器として使用するには、クラスで2つの方法を実装する必要があります.iter__()と_next__() .
オブジェクト向けのプログラミングを知っていれば、クラスにはコンストラクション関数があり、Pythonのコンストラクション関数は_init__()は、オブジェクトの初期化時に実行されます.
__iter__()メソッドは、__を実装した特殊な反復オブジェクトを返します.next__()メソッドは、StopIteration例外によって反復の完了を識別します.
__next__()メソッドは、次の反復オブジェクトを返します.
数値を返す反復器を作成します.初期値は1で、1ずつ増加します.
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a +=1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter)) # 1
print(next(myiter)) # 2
print(next(myiter)) # 3
print(next(myiter)) # 4
print(next(myiter)) # 5
ジェネレータPythonではyieldを用いた関数をジェネレータ(Generator)と呼ぶ.
通常の関数とは異なり、ジェネレータは反復操作にのみ使用できる反復器を返す関数であり、ジェネレータが反復器であることをより簡単に理解します.
ジェネレータの実行を呼び出すと、yieldに遭遇するたびに関数が一時停止し、現在のすべての実行情報が保存されます.
yieldの値を返し、次のnext()メソッドの実行時に現在の位置から実行を続行します.ジェネレータ関数を呼び出し、反復オブジェクトを返します.
次の例では、yieldを使用してフィボナッチ数列を実装します.
import sys
def fibonacci(n): # -
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f ,
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()