diff --git a/Lib/distutils/command/sdist.py b/Lib/distutils/command/sdist.py
index bb21061..f51d72f 100644
--- a/Lib/distutils/command/sdist.py
+++ b/Lib/distutils/command/sdist.py
@@ -240,8 +240,7 @@
         optional = ['test/test*.py', 'setup.cfg']
         for pattern in optional:
             files = filter(os.path.isfile, glob(pattern))
-            if files:
-                self.filelist.extend(files)
+            self.filelist.extend(files)
 
         # build_py is used to get:
         #  - python modules
diff --git a/Lib/http/server.py b/Lib/http/server.py
index f6f788f..930831c 100644
--- a/Lib/http/server.py
+++ b/Lib/http/server.py
@@ -1015,8 +1015,9 @@
         if ua:
             env['HTTP_USER_AGENT'] = ua
         co = filter(None, self.headers.get_all('cookie', []))
-        if co:
-            env['HTTP_COOKIE'] = ', '.join(co)
+        cookie_str = ', '.join(co)
+        if cookie_str:
+            env['HTTP_COOKIE'] = cookie_str
         # XXX Other HTTP_* headers
         # Since we're setting the env in the parent, provide empty
         # values to override previously set values
diff --git a/Lib/platform.py b/Lib/platform.py
index 64025a3..4e53f42 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -1109,7 +1109,7 @@
     except AttributeError:
         no_os_uname = 1
 
-    if no_os_uname or not filter(None, (system, node, release, version, machine)):
+    if no_os_uname or not list(filter(None, (system, node, release, version, machine))):
         # Hmm, no there is either no uname or uname has returned
         #'unknowns'... we'll have to poke around the system then.
         if no_os_uname:
diff --git a/Lib/test/sortperf.py b/Lib/test/sortperf.py
index 44fc1b0..0ce88de 100644
--- a/Lib/test/sortperf.py
+++ b/Lib/test/sortperf.py
@@ -118,12 +118,12 @@
             L = L * (n // 4)
             # Force the elements to be distinct objects, else timings can be
             # artificially low.
-            L = map(lambda x: --x, L)
+            L = list(map(lambda x: --x, L))
         doit(L) # ~sort
         del L
 
         # All equal.  Again, force the elements to be distinct objects.
-        L = map(abs, [-0.5] * n)
+        L = list(map(abs, [-0.5] * n))
         doit(L) # =sort
         del L
 
@@ -131,11 +131,11 @@
         # for an older implementation of quicksort, which used the median
         # of the first, last and middle elements as the pivot.
         half = n // 2
-        L = range(half - 1, -1, -1)
+        L = list(range(half - 1, -1, -1))
         L.extend(range(half))
         # Force to float, so that the timings are comparable.  This is
         # significantly faster if we leave tham as ints.
-        L = map(float, L)
+        L = list(map(float, L))
         doit(L) # !sort
         print()
 
diff --git a/Misc/NEWS b/Misc/NEWS
index 3f186a6..5bbbd3d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -84,6 +84,8 @@
 Library
 -------
 
+- Issue #8230: Fix Lib/test/sortperf.py.
+
 - Issue #7395: Fix tracebacks in pstats interactive browser.
 
 - Issue #1713: Fix os.path.ismount(), which returned true for symbolic links
