2010-10-28 2 views
3

Supposons que j'ai un namedtuple commeen utilisant `map` pour construire plusieurs tuples nommés

>>> Point = namedtuple('Point','x y') 

Pourquoi est-ce que je construis un seul objet via

>>> Point(3,4) 

encore quand je veux appliquer le point via carte, je dois appeler peut-être,

>>> map(Point._make,[(3,4),(5,6)]) 

Je soupçonne que cela a quelque chose à voir avec classmethods, et espère que déterminer ceci, je vais en apprendre plus sur eux aussi. Merci d'avance.

Répondre

5

Point._make prend un tuple comme seul argument. Votre appel map est équivalent à [Point._make((3, 4)), Point._make((5, 6))]. L'utilisation d'une compréhension de liste rend ceci plus évident: [Point(*t) for t in [(3, 4), (5, 6)]] réalise le même effet.

+4

Vous pouvez également utiliser starmap depuis itertools - list (starmap (Point, [[1,2], [3, 4]))) – lazy1

+0

Il y a une douzaine d'autres façons de le faire, mais une compréhension de liste est la plus claire. ce qu'il fait exactement. – habnabit

+0

Merci, tout le monde. Cela a vraiment éclairci le problème pour moi. – Rick

Questions connexes