python(データフィルタ)
1334 ワード
Python 3で:(1)xrangeの機能がrangeに統合され、xrangeは既に存在しない->rangeとxrangeの使い方(2)filterはリストを1つ返すことができず、1つの反復オブジェクトしか戻ることができず、1つのリスト()に組み込む必要があります.また、filterフィルタリング後、元のリストに影響を及ぼさない(3)辞書のiteritems()をitems()に変更することに注意してください.
リスト:
テクニック::for_in range(10):単純に10回ループすることを意味し、変数パラメータなどは考慮しない
辞書とコレクション
リスト:
from random import randint
import timeit
#
# e.g.01 -> filter,
# :range(1,10) -> :0-9
data = [randint(-10, 10) for _ in range(10)]
data2 = list(filter(lambda x: x >= 0, data))
# e.g.02 -> ,
data3 = [x for x in data if x >= 0]
# e.g.03 -> ,
res = []
for x in data:
if x >= 0:
res.append(x)
print(res)
#
t1 = timeit.timeit("list(filter(lambda x: x >= 0, %s))" % data, number=10)
t2 = timeit.timeit("[x for x in %s if x >= 0]" % data, number=10)
print(t1, t2, sep="*"*20)
テクニック::for_in range(10):単純に10回ループすることを意味し、変数パラメータなどは考慮しない
辞書とコレクション
# -------------------------------- -----------------------------------------------#
d = {x: randint(60, 100) for x in range(1, 21)}
d1 = {k: v for k, v in d.items() if v > 90}
print(d, d1, sep="=============
")
# -------------------------------- -----------------------------------------------#
print(data)
s = set(data)
s1 = {x for x in s if x % 3 == 0}
print(s1)