Python Language Cartographie en série et parallèle


Exemple

map () est une fonction intégrée, ce qui signifie qu’elle est disponible partout sans avoir à utiliser une instruction «importation». Il est disponible partout, tout comme print () Si vous regardez l'exemple 5, vous verrez que je devais utiliser une instruction d'importation avant de pouvoir utiliser une jolie impression (importation pprint). Ainsi, pprint n'est pas une fonction intégrée

Cartographie en série

Dans ce cas, chaque argument de l'itérable est fourni comme argument de la fonction de mappage dans l'ordre croissant. Cela se produit lorsque nous n’avons qu’une seule option à mapper et que la fonction de mappage nécessite un seul argument.

Exemple 1

insects = ['fly', 'ant', 'beetle', 'cankerworm']
f = lambda x: x + ' is an insect'
print(list(map(f, insects))) # the function defined by f is executed on each item of the iterable insects

résulte en

['fly is an insect', 'ant is an insect', 'beetle is an insect', 'cankerworm is an insect']

Exemple 2

print(list(map(len, insects))) # the len function is executed each item in the insect list

résulte en

[3, 3, 6, 10]

Cartographie parallèle

Dans ce cas, chaque argument de la fonction de mappage est extrait de toutes les itérables (une de chaque itérable) en parallèle. Le nombre d'itérables fourni doit donc correspondre au nombre d'arguments requis par la fonction.

carnivores = ['lion', 'tiger', 'leopard', 'arctic fox']
herbivores = ['african buffalo', 'moose', 'okapi', 'parakeet']
omnivores = ['chicken', 'dove', 'mouse', 'pig']

def animals(w, x, y, z):
    return '{0}, {1}, {2}, and {3} ARE ALL ANIMALS'.format(w.title(), x, y, z)

Exemple 3

# Too many arguments
# observe here that map is trying to pass one item each from each of the four iterables to len. This leads len to complain that
# it is being fed too many arguments
print(list(map(len, insects, carnivores, herbivores, omnivores)))

résulte en

TypeError: len() takes exactly one argument (4 given)

Exemple 4

# Too few arguments
# observe here that map is suppose to execute animal on individual elements of insects one-by-one. But animals complain when
# it only gets one argument, whereas it was expecting four.
print(list(map(animals, insects)))

résulte en

TypeError: animals() missing 3 required positional arguments: 'x', 'y', and 'z'

Exemple 5

# here map supplies w, x, y, z with one value from across the list
import pprint
pprint.pprint(list(map(animals, insects, carnivores, herbivores, omnivores)))

résulte en

 ['Fly, lion, african buffalo, and chicken ARE ALL ANIMALS',
 'Ant, tiger, moose, and dove ARE ALL ANIMALS',
 'Beetle, leopard, okapi, and mouse ARE ALL ANIMALS',
 'Cankerworm, arctic fox, parakeet, and pig ARE ALL ANIMALS']