如何获取列表中首元素为最小值的所有元组实例?
解决方法
你用min(roster)只能拿到列表里第一个首元素最小的元组,转成列表后自然只能得到单个元组的拆分结果,没法获取所有符合条件的项。要拿到所有首元素为最小值的元组,可以分两步实现:
- 先计算所有元组首元素的最小值
- 筛选出所有首元素等于这个最小值的元组
完整代码示例
roster = [(1,'a'),(1,'b'),(3,'c')] # 获取首元素的最小值 min_first_val = min(item[0] for item in roster) # 筛选所有符合条件的元组 smallest_teams = [item for item in roster if item[0] == min_first_val] print(smallest_teams) # 输出: [(1, 'a'), (1, 'b')]
补充说明
- 用生成器表达式
min(item[0] for item in roster)计算最小值,比先把所有首元素存成列表更节省内存 - 列表推导式是Python中筛选元素最简洁高效的方式,一行代码就能完成筛选逻辑
内容的提问来源于stack exchange,提问作者Faren
相关产品推荐
相关产品推荐

