diff --git a/scapy/plist.py b/scapy/plist.py
index c741ecb9220d9e2d4b5d12c1d437967bdfdfef91..abb9412d653435a2dfcd65918e806759eff4698e 100644
--- a/scapy/plist.py
+++ b/scapy/plist.py
@@ -169,14 +169,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 == {}: