我有一个元组列表:
list_of_tuples = [('4', 35.26), ('1', 48.19), ('5', 90.0), ('3', 90.0)]
元组[0]是item_ID
元组[1]是一个角度
我有一个要从列表中删除/忽略的item_ID列表:
ignore_IDs = [5, 3]
我需要在list_of_tuples中找到最小的角度,只要它的ID不在ignore_IDs中。
这用于角度改变的函数和要忽略的ID改变。
任何人都可以帮助我吗?
道歉如果解释得很糟糕。
答案 0 :(得分:1)
像这样的事情会发生:
min([t[1] for t in list_of_tuples if int(t[0]) not in ignore_IDs])
答案 1 :(得分:0)
您可以将filter
与lambda一起使用来实现此目的:
>>> list(filter(lambda x: x[0] not in map(str, ignore_IDs), list_of_tuples))
[('4', 35.26), ('1', 48.19)]
注意:使用了map(str, ignore_IDs)
行,因为您的元组ID与要忽略的ID之间存在冲突类型。
一个建议:如果你想要忽略很多ID,我建议你使用一个哈希对象,比如字典或集合。对于列表,可清除对象的成员资格查找为O(1)
而不是O(n)
。
答案 2 :(得分:0)
min函数支持一个键。您可以在键中使用lambda函数来获得所需的答案。
见这个例子
min(list_of_tuples, key = lambda (i,x): x if int(i) not in ignore_IDs else '')[1]
这将导致项目ID的最小角度不在忽略ID
中35.26