from operator import itemgetter
from itertools import takewhile
xs = [ ('foo',1), ('bar',1), ('baz',2) ]
xs
在第二个项目上排序 - 之后没有更多1
的 s 'bar'
。
def item_map(xs):
getcount = itemgetter(1)
return list(map(getcount,xs))
print(item_map(xs))
>>> [1, 1, 2]
返回每个元组的第二个元素的列表。
def item_take(xs):
return list(takewhile(lambda x: x[1] == 1, xs))
print(item_take(xs))
[('foo', 1), ('bar', 1)]
返回具有 == 1 的第二个元素的元组。
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 的第二个元素的元组
有没有办法itemgetter
代替 lambda?或者itemgetter
不能这样使用?
编辑。takewhile
被使用是有原因的。我明白它的作用。此函数将用于排序列表。我很欣赏元组是倒退的,但是我使用它的代码对于我想要的和期望的都是正确的。