it-swarm.com.de

Teilen Sie zwei Listen in python

Ich habe 2 Listen a und b:

a  =   [3,    6,   8,   65,   3]
b  =   [34,   2,   5,   3,    5]

c gets [3/34, 6/2, 8/5, 65/3, 3/5]

Ist es möglich, ihr Verhältnis in Python zu erhalten, wie in der Variablen c oben? Ich habe versucht zu tippen:

 a/b

Und ich bekomme einen Fehler:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'list' and 'list'
26
ely
>>> from __future__ import division # floating point division in Py2x
>>> a=[3,6,8,65,3]
>>> b=[34,2,5,3,5]
>>> [x/y for x, y in Zip(a, b)]
[0.08823529411764706, 3.0, 1.6, 21.666666666666668, 0.6]

Oder in numpy können Sie a/b

>>> import numpy as np
>>> a=np.array([3,6,8,65,3], dtype=np.float)
>>> b=np.array([34,2,5,3,5], dtype=np.float)
>>> a/b
array([  0.08823529,   3.        ,   1.6       ,  21.66666667,   0.6       ])
34
jamylak

Die eingebaute Funktion map () erledigt diese Probleme in Kürze:

>>> from operator import truediv
>>> a=[3,6,8,65,3]
>>> b=[34,2,5,3,5]
>>> map(truediv, a, b)
[0.08823529411764706, 3.0, 1.6, 21.666666666666668, 0.6]
17

Dies können Sie mit dem Listenverständnis (Element für Element) tun:

div = [ai/bi for ai,bi in Zip(a,b)]

Beachten Sie, dass Sie Folgendes angeben müssen, wenn Sie eine Float-Division wünschen (oder die ursprünglichen Werte floaten lassen möchten):

fdiv = [float(ai)/bi for ai,bi in Zip(a,b)]
10
sapi

Verwenden Sie Zip und ein Listenverständnis:

>>> a = [3,6,8,65,3]
>>> b = [34,2,5,3,5]
>>> [(x*1.0)/y for x, y in Zip(a, b)]
[0.08823529411764706, 3.0, 1.6, 21.666666666666668, 0.6]
10

Sie können den folgenden Code verwenden:

a  =   [3,    6,   8,   65,   3]
b  =   [34,   2,   5,   3,    5]

c = [float(x)/y for x,y in Zip(a,b)]
print(c)
0
Shishir Nanoty