我有以下列表
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中是否有这样的符号?)。
我更喜欢使用地图和过滤器的解决方案,因为那些对我来说最直观。
答案 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]