diff --git a/meshmode/discretization/__init__.py b/meshmode/discretization/__init__.py
index 56cae0d98155b2de336597aff56393e2cde3d6bd..1a0ab65234e3f7cd5ad4110eb50305bc8d600636 100644
--- a/meshmode/discretization/__init__.py
+++ b/meshmode/discretization/__init__.py
@@ -583,9 +583,8 @@ class Discretization:
                                    NameHint(name_hint)))
 
         result = make_obj_array([
-            _DOFArray(None, tuple([
-                actx.freeze(resample_mesh_nodes(grp, iaxis)) for grp in self.groups
-                ]))
+            _DOFArray(None, tuple(actx.freeze(resample_mesh_nodes(grp, iaxis))
+                      for grp in self.groups))
             for iaxis in range(self.ambient_dim)])
         if cached:
             self._cached_nodes = result
diff --git a/meshmode/dof_array.py b/meshmode/dof_array.py
index 8eebd2529c70e69f216113def0069c9bffcd0f50..205c0b5c75b287640a26c28d1ff2e867e3ff45f4 100644
--- a/meshmode/dof_array.py
+++ b/meshmode/dof_array.py
@@ -399,7 +399,8 @@ def _deserialize_dof_container(
     else:
         return type(template)(
                 template.array_context,
-                data=tuple([v for _i, v in iterable]))
+                # NOTE: tuple([]) is faster, and this is a cost-sensitive code path.
+                data=tuple([v for _i, v in iterable]))  # noqa: C409
 
 
 @with_array_context.register(DOFArray)
diff --git a/meshmode/interop/firedrake/mesh.py b/meshmode/interop/firedrake/mesh.py
index e97f3a631ab1e70e5de192156bfc30b7df9b9a0e..f1830b04b22ccc554732771ee274f1445d1393bd 100644
--- a/meshmode/interop/firedrake/mesh.py
+++ b/meshmode/interop/firedrake/mesh.py
@@ -259,10 +259,8 @@ def _get_firedrake_facial_adjacency_groups(fdrake_mesh_topology,
     # )
     # and meshmode's facet ordering: obtained from a simplex element group
     import modepy as mp
-    mm_face_vertex_indices = tuple([
-        face.volume_vertex_indices
-        for face in mp.faces_for_shape(mp.Simplex(top.cell_dimension()))
-        ])
+    mm_face_vertex_indices = tuple(face.volume_vertex_indices
+        for face in mp.faces_for_shape(mp.Simplex(top.cell_dimension())))
 
     # map firedrake local face number to meshmode local face number
     fd_loc_fac_nr_to_mm = {}
diff --git a/meshmode/mesh/__init__.py b/meshmode/mesh/__init__.py
index 7e04fb0c559f626dbe754aa2a9f576c6701e3013..97a0315c65ca818512cc328b955cb2a28aa4c3cf 100644
--- a/meshmode/mesh/__init__.py
+++ b/meshmode/mesh/__init__.py
@@ -354,7 +354,7 @@ class _ModepyElementGroup(MeshElementGroup):
 
     @memoize_method
     def face_vertex_indices(self) -> tuple[tuple[int, ...], ...]:
-        return tuple([face.volume_vertex_indices for face in self._modepy_faces])
+        return tuple(face.volume_vertex_indices for face in self._modepy_faces)
 
     @memoize_method
     def vertex_unit_coordinates(self) -> np.ndarray:
@@ -1052,9 +1052,7 @@ def make_mesh(
             facial_adjacency_groups,
             element_id_dtype,
             face_id_dtype)
-        facial_adjacency_groups = tuple([
-            tuple(grps) for grps in facial_adjacency_groups
-            ])
+        facial_adjacency_groups = tuple(tuple(grps) for grps in facial_adjacency_groups)
 
     mesh = Mesh(
         groups=tuple(groups),
diff --git a/meshmode/mesh/processing.py b/meshmode/mesh/processing.py
index 7edbcf7175c9f84ab68d39fac495c84852267ecd..2a96744a20092af23240c4475377563feec4e4ec 100644
--- a/meshmode/mesh/processing.py
+++ b/meshmode/mesh/processing.py
@@ -1380,9 +1380,8 @@ def glue_mesh_boundaries(
 
     return mesh.copy(
         nodal_adjacency=False,
-        _facial_adjacency_groups=tuple([
-            tuple(fagrps) for fagrps in facial_adjacency_groups
-            ]),
+        _facial_adjacency_groups=tuple(
+            tuple(fagrps) for fagrps in facial_adjacency_groups),
         )
 
 # }}}
@@ -1526,9 +1525,10 @@ def affine_map(
     return mesh.copy(
             vertices=vertices,
             groups=tuple(new_groups),
-            _facial_adjacency_groups=tuple([
-                tuple(fagrps) for fagrps in facial_adjacency_groups
-                ]) if facial_adjacency_groups is not None else None,
+            _facial_adjacency_groups=tuple(
+                tuple(fagrps)
+                for fagrps in facial_adjacency_groups)
+            if facial_adjacency_groups is not None else None,
             is_conforming=mesh.is_conforming)
 
 
@@ -1602,10 +1602,8 @@ def make_mesh_grid(
 
         from pytools import wandering_element
         size = bmax - bmin
-        offset = tuple([
-            np.array(e_i) * (size[i] + 0.25 * size[i])
-            for i, e_i in enumerate(wandering_element(mesh.ambient_dim))
-            ])
+        offset = tuple(np.array(e_i) * (size[i] + 0.25 * size[i])
+            for i, e_i in enumerate(wandering_element(mesh.ambient_dim)))
 
     if len(offset) != mesh.ambient_dim:
         raise ValueError("must provide an offset per dimension")
diff --git a/meshmode/mesh/refinement/tessellate.py b/meshmode/mesh/refinement/tessellate.py
index 64ecc572a47133f69f20c42c87d5fdbc2d27fd2b..2f4b3a20e60bad08c90d1efc173e8b6b7e4bd75e 100644
--- a/meshmode/mesh/refinement/tessellate.py
+++ b/meshmode/mesh/refinement/tessellate.py
@@ -247,9 +247,7 @@ def _get_group_tessellation_info_modepy(meg: _ModepyElementGroup):
     from pytools import add_tuples
     space = mp.space_for_shape(shape, 1)
     assert type(space) == type(meg._modepy_space)  # noqa: E721
-    orig_vertices = tuple([
-        add_tuples(vt, vt) for vt in mp.node_tuples_for_space(space)
-        ])
+    orig_vertices = tuple(add_tuples(vt, vt) for vt in mp.node_tuples_for_space(space))
     orig_vertex_indices = [ref_vertices_to_index[vt] for vt in orig_vertices]
 
     midpoints = _get_ref_midpoints(shape, ref_vertices)
diff --git a/meshmode/mesh/visualization.py b/meshmode/mesh/visualization.py
index 4f9d184f91962545c3bea0a747c5b2de6c515c8c..42ee7fdc34d9f61ce3cf41bc96e8080764a48041 100644
--- a/meshmode/mesh/visualization.py
+++ b/meshmode/mesh/visualization.py
@@ -421,12 +421,10 @@ def visualize_mesh_vertex_resampling_error(
 
     from meshmode.dof_array import DOFArray
     from meshmode.mesh import _mesh_group_node_vertex_error
-    error = DOFArray(actx, tuple([
-        actx.from_numpy(
+    error = DOFArray(actx, tuple(actx.from_numpy(
             np.sqrt(np.sum(_mesh_group_node_vertex_error(mesh, mgrp)**2, axis=0))
         )
-        for mgrp in mesh.groups
-    ]))
+        for mgrp in mesh.groups))
 
     # }}}
 
diff --git a/pyproject.toml b/pyproject.toml
index 3d477fadb632452425ab39c6f05a74b68835a025..ae4a9d763fbae4eed19214b18a91850991f91aa5 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -94,7 +94,6 @@ extend-select = [
     "W",    # pycodestyle
 ]
 extend-ignore = [
-    "C409", # remove comprehension within tuple call
     "C90",  # McCabe complexity
     "E226", # missing whitespace around arithmetic operator
     "E241", # multiple spaces after comma