我有2个列表a
和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]
Run Code Online (Sandbox Code Playgroud)
是否有可能在Python中获得它们的比例,如c
上面的变量?我试着输入:
a/b
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for /: 'list' and 'list'
Run Code Online (Sandbox Code Playgroud)
jam*_*lak 35
>>> 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]
Run Code Online (Sandbox Code Playgroud)
或者numpy
你可以做到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 ])
Run Code Online (Sandbox Code Playgroud)
Ray*_*ger 17
内置的map()函数可以解决这些问题:
>>> 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]
Run Code Online (Sandbox Code Playgroud)
sap*_*api 10
你可以使用list comprehension(逐个元素)来做到这一点:
div = [ai/bi for ai,bi in zip(a,b)]
Run Code Online (Sandbox Code Playgroud)
请注意,如果您想要浮点除法,则需要指定此值(或使原始值浮动):
fdiv = [float(ai)/bi for ai,bi in zip(a,b)]
Run Code Online (Sandbox Code Playgroud)
Ash*_*ary 10
使用zip
和列表理解:
>>> 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]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46337 次 |
最近记录: |