diff --git a/scapy/plist.py b/scapy/plist.py
index cf74e8bf9f835ef2fabb28bae8b48083c2316c9a..3dc64866dc686ff972b2db68d6f5799b0ceab46b 100644
--- a/scapy/plist.py
+++ b/scapy/plist.py
@@ -170,14 +170,13 @@ lfilter: truth function to apply to each packet to decide whether it will be dis
         """
 
         # Get the list of packets
-        l = self.res
-
-        # Apply the filter
-        if lfilter is not None:
-            l = filter(lfilter, l)
-
-        # Apply the function f to compute the difference
-        l = map(f, l[:-delay],l[delay:])
+        if lfilter is None:
+            l = [f(self.res[i], self.res[i+1])
+                    for i in xrange(len(self.res) - delay)]
+        else:
+            l = [f(self.res[i], self.res[i+1])
+                    for i in xrange(len(self.res) - delay)
+                        if lfilter(self.res[i])]
 
         # Mimic the default gnuplot output
         if kargs == {}: