从满足条件的列表列表中选择元素

时间:2018-04-18 09:20:31

标签: python list filter

我有以下列表

a = [['a', 'b', 1], ['c', 'b', 3], ['c','a', 4], ['a', 'd', 2]]

我试图从列表中删除最后一个元素小于3的所有元素。所以输出应该看起来像

a = [['c', 'b', 3], ['c','a', 4]]

我尝试以下列方式使用过滤器

list(filter(lambda x: x == [_, _, 2], a))

这里_试图表示那些地方的元素可以是任何东西。我已经习惯了mathematica的这种语法,但我一直无法在Python中找到这样的东西(在python中是否有这样的符号?)。

我更喜欢使用地图和过滤器的解决方案,因为那些对我来说最直观。

3 个答案:

答案 0 :(得分:0)

列表理解方法:

public void contextDestroyed(ServletContextEvent servletContextEvent) {
    // This fixes the JDBC driver not unloading corectly on a context reload  for DB2 JDBC 4.19.66
    try {
        System.out.println("Trying to stop the DB2 timer thread");
        new com.ibm.db2.jcc.am.tp() {
            {
                if (a != null) {
                    a.cancel();
                } else {
                    System.out.println("Timer is null, skipped");
                }
            }
        };
        System.out.println("Stopped the timer");
    } catch (Exception e) {
        System.out.println("Could not stop the DB2 timer thread " + e.getMessage());
    }
}

答案 1 :(得分:0)

您应该使用x[-1] >= 3中的lambda来保留所有子列表的最后一个值大于或等于3

>>> a = [['a', 'b', 1], ['c', 'b', 3], ['c','a', 4], ['a', 'd', 2]]
>>> list(filter(lambda x: x[-1] >= 3, a))
[['c', 'b', 3], ['c', 'a', 4]]

答案 2 :(得分:-1)

a = [['a', 'b', 1], ['c', 'b', 3], ['c','a', 4], ['a', 'd', 2]]

使用列表理解过滤上面的列表,如:

b = [x for x in a if x[-1] >= 3]