On the 3360 for loops of the stdlib (*), I only found 2 loops which would benefit of assignment expressions.
It's not easy to find loops which: - build a list, - are simple enough to be expressed as list comprehension, - use a condition (if), - use an expression different than just a variable name as the list value (value appended to the list). diff --git a/Lib/mailbox.py b/Lib/mailbox.py index 056251dce0..dc61a3a8b6 100644 --- a/Lib/mailbox.py +++ b/Lib/mailbox.py @@ -1341,9 +1341,9 @@ class Babyl(_singlefileMailbox): if len(stops) < len(starts): stops.append(line_pos - len(linesep)) starts.append(next_pos) - labels = [label.strip() for label - in self._file.readline()[1:].split(b',') - if label.strip()] + labels = [slabel for label + in self._file.readline()[1:].split(b',') + if (slabel := label.strip())] label_lists.append(labels) elif line == b'\037' or line == b'\037' + linesep: if len(stops) < len(starts): diff --git a/Lib/nntplib.py b/Lib/nntplib.py index 5961a28ab7..a5d13e35be 100644 --- a/Lib/nntplib.py +++ b/Lib/nntplib.py @@ -843,11 +843,9 @@ class _NNTPBase: DeprecationWarning, 2) line_pat = re.compile('^([^ \t]+)[ \t]+(.*)$') resp, raw_lines = self._longcmdstring('XGTITLE ' + group, file) - lines = [] - for raw_line in raw_lines: - match = line_pat.search(raw_line.strip()) - if match: - lines.append(match.group(1, 2)) + lines = [match.group(1, 2) + for raw_line in raw_lines + if (match := line_pat.search(raw_line.strip()))] return resp, lines def xpath(self, id): (*) Command used to count the number of for loops in the stdlib: $ grep '\bfor\b' Lib/*py Lib/{asyncio,logging,multiprocessing}/*.py|grep -v '"""'|grep -v "'''"|grep -v '\.py: *#'|wc -l 3360 Victor _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com