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