from operator import itemgetter
from itertools import takewhile
xs = [ ('foo',1), ('bar',1), ('baz',2) ]
xs
1
2番目の項目でソートされます-の後にsはもうありません'bar'
。
def item_map(xs):
getcount = itemgetter(1)
return list(map(getcount,xs))
print(item_map(xs))
>>> [1, 1, 2]
すべてのタプルの2番目の要素のリストを返します。
def item_take(xs):
return list(takewhile(lambda x: x[1] == 1, xs))
print(item_take(xs))
[('foo', 1), ('bar', 1)]
==1の2番目の要素を持つタプルを返します。
def could_this_work(xs):
match = itemgetter(1) == 1
return list(takewhile(match, xs))
print(could_this_work(xs))
TypeError: 'bool' object is not callable
==1である2番目の要素を持つタプルを返しません
itemgetter
ラムダの代わりに使用する方法はありますか?またはitemgetter
、このように使用することはできませんか?
編集。takewhile
理由で使用されています。私はそれが何をするのか理解しています。この関数は、ソートされたリストで使用されます。タプルがこれに対して逆方向になっていることを感謝しますが、私が使用したコードは、私が望んでいることと期待していることに対して正しいものです。