2017-10-15 3 views
-1

Je dois générer 10 nombres aléatoires dans 2 variables et calculer le rapport entre eux. Mon code est ci-dessous. Qu'est-ce que je fais mal?type (s) d'opérande non pris en charge pour /: 'list' et 'list' Python

from random import randint 
N=10 
a = [random.randint(0, 10) for _ in range(N)] 
b = [random.randint(0, 10) for _ in range(N)] 
print (a,b) 
ratio = a/b 

TypeError: unsupported operand type(s) for /: 'list' and 'list' 
+1

Le diagnostic me semble assez clair. L'opérateur '/' n'accepte pas les opérandes de type list. Vous voulez calculer des quotients de paires d'éléments * list *, pas des listes elles-mêmes. –

Répondre

0

Les listes ne prennent pas en charge les opérateurs arithmétiques par défaut, parce que les éléments ne peuvent pas être des choses qui prennent en charge l'arithmétique (ils ne peuvent pas être même nombre, et ils pourraient être des types mixtes!).

Vous aurez envie de faire quelque chose comme

from random import randint 

N = 10 
a = [random.randint(0, 10) for _ in range(N)] 
b = [random.randint(0, 10) for _ in range(N)] 
ratio = [ai/bi for ai, bi in zip(a, b)] 

print(a, b) 
print(ratio) 

Pour des moyens plus pratiques pour faire ce genre de calculs, regardez dans NumPy.

+0

Merci, je suis nouveau avec tout cela, je vais aussi regarder NumPy. –