python3 では、filter、map、reduce は組み込み関数ではなくなりました。つまり、
関数フィルター条件を使用して、iterableで必要なデータを取得します。
from collections import Iterator test_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] f = filter(lambda x: x % 3 == 0, test_list) # filter 得到的是一个迭代器 print(isinstance(f, Iterator)) f.__next__() for i in f: print(i) #输出 True 6 9
は、関数と反復可能なオブジェクト(リストなど)を受け入れ、その関数をその関数の各要素に適用します。シーケンスを順に実行して New イテレータを形成します。
from collections import Iterator def f(x): return 2 * x # 定义一个函数 t_list = [1, 2, 3, 4, 5] function = map(f, t_list) print(isinstance(function, Iterator)) # print(function.__next__()) function.__next__() for i in function: print(i) #输出 True 4 6 8 10
reduceは関数を反復可能なシーケンスに適用し、シーケンスの次の要素で累積計算を実行し続ける必要があります
。 reduce 関数は python3 のビルトインには属しなくなりましたが、functools モジュールの下にあり、使用する必要がある場合は functools モジュールからインポートする必要があります
from functools import reduce f = reduce(lambda x, y: x*y, [1, 2, 4]) print(f) #输出 8
>>> hex(23) '0x17'
>>> from collections import Iterator >>> isinstance(range(5),Iterator) False >>> from collections import Iterable >>> isinstance(range(5),Iterable) True >>> f.__next__ Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'range' object has no attribute '__next__' >>> for i in f: ... print(i) ... 0 1 2 3 4 # range(x) 是一个可迭代对象,而不是一个迭代器
>>> list((1,2,3,4,5)) #把一个元组转换为一个列表 [1, 2, 3, 4, 5]
シーケンスのスライス
>>> a = [1,2,3,4,5,6] >>> a[slice(1,3)] [2, 3] >>> a[1:3] [2, 3]
>>> sorted([5,3,2,6,8]) [2, 3, 5, 6, 8] >>> a = {1:5,6:8,3:6} >>> sorted(a) #默认是按key排序 [1, 3, 6] >>> sorted(a.items()) #按key排序 [(1, 5), (3, 6), (6, 8)] >>> sorted(a.items(),key = lambda x:x[1]) #按value排序 [(1, 5), (3, 6), (6, 8)]
以上がPython3の組み込み関数の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。