【问题标题】:Finding negative values in tuple of list in Python在 Python 中的列表元组中查找负值
【发布时间】:2020-12-09 19:30:45
【问题描述】:

我有如下列表的元组。

listt = [('1995', 0.2),
         ('1996', 0.05),
         ('1997', 0.029),
         ('1998', 0.43,
         ('1999', -0.086),
         ('2000', 0.050,
         ('2001', -0.27),
         ('2002', 0.173),
         ('2003', 0.289)]

在这里,1999 和 2001 具有负值。我需要打印多年的负值。我写了下面的代码,但它不起作用。

print(filter(listt, key=lambda x:x[1]<0)[0]))

【问题讨论】:

  • 您在该列表中有未闭合的元组。
  • 该代码有语法错误,根本无法运行。请发布您的实际代码。
  • 什么文档说filter 有一个key 参数?

标签: python function loops tuples


【解决方案1】:

filter 将在列表的所有元素上运行给定函数,并仅返回函数返回True 的那些元素。所以应该是:

list(filter(lambda x: x[1]<0, listt))

输出:

[('1999', -0.086), ('2001', -0.27)]

由于您只想打印相应的年份,因此您可以枚举并打印它们

[y for y, v in filter(lambda x: x[1]<0, listt)]

输出:

['1999', '2001']

或者同时做两个:

[y for y, v in listt if v < 0]

输出:

['1999', '2001']

【讨论】:

    【解决方案2】:

    有一种更简单的方法:

    print([k for k, v in listt if v < 0])
    

    【讨论】:

      【解决方案3】:

      试试这个:

      listt = [('1995', 0.2),
           ('1996', 0.05),
           ('1997', 0.029),
           ('1998', 0.43),
           ('1999', -0.086),
           ('2000', 0.050),
           ('2001', -0.27),
           ('2002', 0.173),
           ('2003', 0.289)]
      
      print([x[0] for x in listt if x[1] < 0]) #=>['1999', '2001']
      

      【讨论】:

        猜你喜欢
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-20
        • 1970-01-01
        • 1970-01-01
        • 2011-04-17
        • 2010-11-16
        相关资源
        最近更新 更多