L'autre jour, PEP 618 (Add Optional Length-Checking To zip) a été [confirmé qu'il a été accepté](https: // github. J'ai vu com / python / peps / pull / 1435). Donc, cette fois, je lirai PEP 618.
zip (), vous pouvez implicitement vous attendre à ce que chaque élément ait la même longueur (souvent).  >>> list(zip([1,2,3], [4]))  # 2,3 seront perdus
  [(1, 4)]
  def apply_calculations(items):
      transformed = transform(items)
      for i, t in zip(items, transformed):
          yield calculate(i, t)
zip () et vérifiez que chaque élément a la même longueurPython 3.10 a ajouté un paramètre appelé «strict» à la fonction «zip ()».
Si vous spécifiez une valeur positive pour strict, ValueError se produit lorsque les longueurs des éléments ne sont pas égales.
>>> for item in zip([1, 2, 3], [4], strict=True):
...     print(item)
...
(1, 4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: zip() argument 2 is shorter than argument 1
J'obtiens une erreur indiquant que le deuxième argument de zip () est plus court que le premier argument.
À propos, il convient de noter que la boucle est en cours d'exécution jusqu'à ce qu'elle détecte que les longueurs ne correspondent pas.
Par défaut, le comportement est le même qu'avant (équivalent à strict = False, c'est-à-dire que si les longueurs sont différentes, les données sont supprimées).
>>> for item in zip([1, 2, 3], [4]):
...     print(item)
...
(1, 4)
>>>
strict = True, donc cela peut être un problème si vous oubliez de le spécifier.Recommended Posts