ホームページ  >  記事  >  バックエンド開発  >  Pythonの組み込み関数フィルターの詳細説明

Pythonの組み込み関数フィルターの詳細説明

黄舟
黄舟オリジナル
2017-06-04 10:17:141381ブラウズ

この記事では主に python 組み込み関数 filter の関連情報を紹介しますので、必要な方は

python 組み込み関数 filter

class filter(object):
 """
 filter(function or None, iterable) --> filter object
 
 Return an iterator yielding those items of iterable for which function(item)
 is true. If function is None, return the items that are true.
 """

filter(func, iterator)

func を参照してください。 :custom または 匿名関数で取得した値はブール値です。true は関数で取得した値を保持し、false はそれを反転します。
イテレータ: 反復可能な オブジェクト

例:

フィルターリスト ['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']
テキスト文字列が含まれている限り、それを削除または否定します。

s.rfind'text'+1

Python3 では、rfind() は文字列の最後に出現した位置を返し、一致するものがない場合は -1 を返します。
数値の 0 は false で、整数 0 より大きいものはすべて true なので、s.rfind'text' の後に +1 があり、文字は見つかりません、そして -1+1=0 になります。

# Filter

li = ['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']

# 默认保留函数所取到的值
print(list(filter(lambda s: s.rfind('text') + 1, li)))
# 取反,下三个例子是一样的
print(list(filter(lambda s: not s.rfind('text') + 1, li)))

# Noe カスタム関数

l1 = ['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']


def distinguish(l):
 nl = []
 for s in l:
  if s.rfind("text") + 1:
   nl.append(s)
 return nl


print(distinguish(l1))

# 2 つのカスタム高階関数

l2 = ['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']


def f(s):
 return s.rfind('text') + 1


def distinguish(func, array):
 nl = []
 for s in array:
  if func(s):
   nl.append(s)
 return nl


print(distinguish(f, l2))

# 3 つの匿名関数

l3 = ['text_test_text', 'test_text_1', 'text_test_2', '3_test_text', 'test_test']


def distinguish(func, array):
 nl = []
 for s in array:
  if func(s):
   nl.append(s)
 return nl

print(distinguish(lambda s: s.rfind('text') + 1, l3))

以上がPythonの組み込み関数フィルターの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。