diff --git a/Lib/distutils/cmd.py b/Lib/distutils/cmd.py
index bd560a6..c6572ca 100644
--- a/Lib/distutils/cmd.py
+++ b/Lib/distutils/cmd.py
@@ -158,7 +158,7 @@
         print(indent + header)
         indent = indent + "  "
         for (option, _, _) in self.user_options:
-            option = option.translate(longopt_xlate)
+            option = longopt_xlate(option)
             if option[-1] == "=":
                 option = option[:-1]
             value = getattr(self, option)
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index c0eef62..2db53f1 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -244,7 +244,7 @@
 
         if self.define:
             defines = self.define.split(',')
-            self.define = map(lambda symbol: (symbol, '1'), defines)
+            self.define = [(symbol, '1') for symbol in defines]
 
         # The option for macros to undefine is also a string from the
         # option parsing, but has to be a list.  Multiple symbols can also
diff --git a/Lib/distutils/dist.py b/Lib/distutils/dist.py
index ddde909..8bcb88c 100644
--- a/Lib/distutils/dist.py
+++ b/Lib/distutils/dist.py
@@ -864,7 +864,8 @@
         for (option, (source, value)) in option_dict.items():
             if DEBUG: print("    %s = %s (from %s)" % (option, value, source))
             try:
-                bool_opts = map(translate_longopt, command_obj.boolean_options)
+                bool_opts = [translate_longopt(o)
+                             for o in command_obj.boolean_options]
             except AttributeError:
                 bool_opts = []
             try:
diff --git a/Lib/distutils/filelist.py b/Lib/distutils/filelist.py
index 8eab0a9..a80c71e 100644
--- a/Lib/distutils/filelist.py
+++ b/Lib/distutils/filelist.py
@@ -85,13 +85,13 @@
             if len(words) < 2:
                 raise DistutilsTemplateError(
                       "'%s' expects <pattern1> <pattern2> ..." % action)
-            patterns = map(convert_path, words[1:])
+            patterns = [convert_path(w) for w in words[1:]]
         elif action in ('recursive-include', 'recursive-exclude'):
             if len(words) < 3:
                 raise DistutilsTemplateError(
                       "'%s' expects <dir> <pattern1> <pattern2> ..." % action)
             dir = convert_path(words[1])
-            patterns = map(convert_path, words[2:])
+            patterns = [convert_path(w) for w in words[2:]]
         elif action in ('graft', 'prune'):
             if len(words) != 2:
                 raise DistutilsTemplateError(
diff --git a/Lib/distutils/mwerkscompiler.py b/Lib/distutils/mwerkscompiler.py
index 25d48ae..130cd61 100644
--- a/Lib/distutils/mwerkscompiler.py
+++ b/Lib/distutils/mwerkscompiler.py
@@ -104,10 +104,10 @@
         # This is because we (usually) create the project in a subdirectory of
         # where we are now, and keeping the paths relative is too much work right
         # now.
-        sources = map(self._filename_to_abs, self.__sources)
-        include_dirs = map(self._filename_to_abs, self.__include_dirs)
+        sources = [self._filename_to_abs(s) for s in self.__sources]
+        include_dirs = [self._filename_to_abs(d) for d in self.__include_dirs]
         if objects:
-            objects = map(self._filename_to_abs, objects)
+            objects = [self._filename_to_abs(o) for o in objects]
         else:
             objects = []
         if build_temp:
diff --git a/Lib/distutils/text_file.py b/Lib/distutils/text_file.py
index db054fd..266466c 100644
--- a/Lib/distutils/text_file.py
+++ b/Lib/distutils/text_file.py
@@ -292,7 +292,7 @@
   continues on next line
 """
     # result 1: no fancy options
-    result1 = map(lambda x: x + "\n", test_data.split("\n")[0:-1])
+    result1 = [x + "\n" for x in test_data.split("\n")[:-1]]
 
     # result 2: just strip comments
     result2 = ["\n",
@@ -357,4 +357,5 @@
                        join_lines=1, rstrip_ws=1, collapse_join=1)
     test_input(6, "join lines with collapsing", in_file, result6)
 
+    del in_file
     os.remove(filename)
