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}