在python中对元组列表进行分区的最佳方法是什么?
目前我有一个按第二个元素(一个值)排序的元组列表,我想以一种有效的方式找到在开头重复的所有值。
可以这样说:
[ ("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3),
("denny", 0), ("mark",0) ]通过函数运行它将返回
[("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3)]. 但我不确定该怎么做。
发布于 2011-03-14 14:43:17
import itertools
import operator
L = [("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3), ("denny", 0), ("mark",0)]
print list(itertools.groupby(L, operator.itemgetter(1)).next()[1])
# [('tearing', 3), ('me', 3), ('apart', 3), ('lisa', 3)]但真的,没必要让我想起那部电影。
发布于 2011-03-14 14:59:58
from itertools import takewhile
L = [("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3), ("denny", 0), ("mark",0)]
first = L[0][1]
print list(takewhile(lambda x : x[1] == first, L))ignacio的一个小变体
发布于 2011-03-14 14:59:42
@Ignacio Vazquez-艾布拉姆斯的答案的替代方案,使用列表理解:
>>> data=[ ("tearing", 3), ("me", 3), ("apart", 3), ("lisa", 3), ("denny", 0), ("mark",0) ]
>>> print [x for x in data if x[-1]== data[0][-1]]
[('tearing', 3), ('me', 3), ('apart', 3), ('lisa', 3)]https://stackoverflow.com/questions/5295508
复制相似问题