use-comprehension¶
A derivative of flake8-comprehensions’s C400-C402 and C403-C404.
Comprehensions are more efficient than functions calls. This C400-C402
suggest to use dict/set/list comprehensions rather than respective
function calls whenever possible. C403-C404 suggest to remove unnecessary
list comprehension in a set/dict call, and replace it with set/dict
comprehension.
Valid examples¶
[val for val in iterable]
{val for val in iterable}
{val: val+1 for val in iterable}
dict(line.strip().split('=', 1) for line in attr_file)
Invalid examples¶
list(val for val in iterable)
Suggested fix
[val for val in iterable]
list(val for row in matrix for val in row)
Suggested fix
[val for row in matrix for val in row]
set(val for val in iterable)
Suggested fix
{val for val in iterable}
Show more
dict((x, f(x)) for val in iterable)
Suggested fix
{x: f(x) for val in iterable}
dict((x, y) for y, x in iterable)
Suggested fix
{x: y for y, x in iterable}
dict([val, val+1] for val in iterable)
Suggested fix
{val: val+1 for val in iterable}
dict((x["name"], json.loads(x["data"])) for x in responses)
Suggested fix
{x["name"]: json.loads(x["data"]) for x in responses}
dict((k, v) for k, v in iter for iter in iters)
Suggested fix
{k: v for k, v in iter for iter in iters}
set([val for val in iterable])
Suggested fix
{val for val in iterable}
dict([[val, val+1] for val in iterable])
Suggested fix
{val: val+1 for val in iterable}
dict([(x, f(x)) for x in foo])
Suggested fix
{x: f(x) for x in foo}
dict([(x, y) for y, x in iterable])
Suggested fix
{x: y for y, x in iterable}
set([val for row in matrix for val in row])
Suggested fix
{val for row in matrix for val in row}