sourcery-ai / sourcery

Instant AI code reviews
https://sourcery.ai
MIT License
1.51k stars 65 forks source link

Extending `list-comprehension` for `zip-for-loops` #298

Open Anselmoo opened 1 year ago

Anselmoo commented 1 year ago

Checklist

Description

Extending the list-comprehension for zip-for-loops. Currently, only merge-list-appends-into-extend is applied, but there might be cases where a double-for-loop / pydantic will be more elegant.

Code Before

_list = []

for i,j in zip(range(10), range(10)[::-1]):
    _list.append(i)
    _list.append(j)
print(_list)

will sourcery currently refactor like this:

_list = []

for i,j in zip(range(10), range(10)[::-1]):
    _list.extend((i, j))
print(_list)
[0, 9, 1, 8, 2, 7, 3, 6, 4, 5, 5, 4, 6, 3, 7, 2, 8, 1, 9, 0]

Code After

However, this can also be achieved as a one-liner

_list = [i for j in zip(range(10), range(10)[::-1]) for i in j]
print(_list)
[0, 9, 1, 8, 2, 7, 3, 6, 4, 5, 5, 4, 6, 3, 7, 2, 8, 1, 9, 0]