Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -260,3 +260,9 @@ def f():
for i in range(5):
if j := i:
items.append(j)

def f():
values = [1, 2, 3]
result = list() # this should be replaced with a comprehension
for i in values:
result.append(i + 1) # PERF401
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,15 @@ pub(crate) fn manual_list_comprehension(checker: &Checker, for_stmt: &ast::StmtF
list_binding_value.is_some_and(|binding_value| match binding_value {
// `value = []`
Expr::List(list_expr) => list_expr.is_empty(),
// `value = list()`
// This might be linted against, but turning it into a list comprehension will also remove it
Expr::Call(call) => {
checker
.semantic()
.resolve_builtin_symbol(&call.func)
.is_some_and(|name| name == "list")
&& call.arguments.is_empty()
}
_ => false,
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,5 +208,16 @@ PERF401.py:262:13: PERF401 Use a list comprehension to create a transformed list
261 | if j := i:
262 | items.append(j)
| ^^^^^^^^^^^^^^^ PERF401
263 |
264 | def f():
|
= help: Replace for loop with list comprehension

PERF401.py:268:9: PERF401 Use a list comprehension to create a transformed list
|
266 | result = list() # this should be replaced with a comprehension
267 | for i in values:
268 | result.append(i + 1) # PERF401
| ^^^^^^^^^^^^^^^^^^^^ PERF401
|
= help: Replace for loop with list comprehension
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,8 @@ PERF401.py:262:13: PERF401 [*] Use a list comprehension to create a transformed
261 | if j := i:
262 | items.append(j)
| ^^^^^^^^^^^^^^^ PERF401
263 |
264 | def f():
|
= help: Replace for loop with list comprehension

Expand All @@ -505,3 +507,25 @@ PERF401.py:262:13: PERF401 [*] Use a list comprehension to create a transformed
261 |- if j := i:
262 |- items.append(j)
259 |+ items = [j for i in range(5) if (j := i)]
263 260 |
264 261 | def f():
265 262 | values = [1, 2, 3]

PERF401.py:268:9: PERF401 [*] Use a list comprehension to create a transformed list
|
266 | result = list() # this should be replaced with a comprehension
267 | for i in values:
268 | result.append(i + 1) # PERF401
| ^^^^^^^^^^^^^^^^^^^^ PERF401
|
= help: Replace for loop with list comprehension

ℹ Unsafe fix
263 263 |
264 264 | def f():
265 265 | values = [1, 2, 3]
266 |- result = list() # this should be replaced with a comprehension
267 |- for i in values:
268 |- result.append(i + 1) # PERF401
266 |+ # this should be replaced with a comprehension
267 |+ result = [i + 1 for i in values] # PERF401
Loading