Comment appliquer des opérations mathématiques de chaque numéro de la liste en python?
Je suis un débutant en python (une semaine). Ici, je suis en train d'imprimer la liste de tous les le premier facteur de 60. Mais pour la ligne 19, j'obtiens le message d'erreur suivant:
TypeError: unsupported operand type(s) de l' %: 'float' et 'liste'
Le code:
whylist = []
factor = []
boom = []
primefactor = []
n = 60
j = (list(range(1, n, 1)))
for numbers in j:
if n%numbers == 0:
whylist.append(numbers)
for everynumber in whylist:
factor.append(everynumber)
for things in factor:
u = (list(range(1, things, 1)))
d = float(things)
if d%u == 0:
boom.append(things)
if len(boom) == 1:
for every in boom:
primefactor.append(every)
print(primefactor)
Ce que je fais mal?
range
ne retourne pas une liste sur python3.x, mais vous avez raison, je ne pense pas quelist(range(...))
est nécessaire ici.- Ah .. oui, bon point .. n'avais pas remarqué le tag .. merci!
Vous devez vous connecter pour publier un commentaire.
Pour appliquer une opération mathématique à chaque élément d'une liste, vous pouvez utiliser une liste de compréhension:
Il y a d'autres façons de le faire ainsi. Parfois, les gens vont utiliser
map
mais la plupart des gens préfèrent la première forme qui est généralement plus efficace et plus clair que l'utilisation de
lambda
(qui peut être un peu déroutant lorsque vous êtes juste de commencer à apprendre le langage python).MODIFIER
Voici un appel récursif à la mise en œuvre de ce que vous essayiez:
Une autre option est d'utiliser des tableaux numpy au lieu de listes.
et numpy prendra soin d'activités de radiodiffusion pour vous. Il devrait également être plus rapide que les interprétations de la liste ou de la carte.
dtype=object
ou quelque chose les entiers ne pas être en précision arbitraire.%
opérateur et il fonctionne encore.rem = j%num
np.mod
sur%
est que vous pouvez jeter un objet iterable à elle et il va encore faire la "bonne chose", où, comme%
va se plaindre.