我想用map函数计算质心。我不想用for循环。帮助处理下面两行?在
class Obj():
def __init__(self, mass = 0., x = 0., y = 0.):
self.mass = mass
self.x = x
self.y = y
# Create List of Objects
objList = []
n = 0
for i in range(0,10):
for j in range(0,10):
objList.append(Obj(i*j,i,j))
# Calculate Center of Mass of List
# The following is pseudocode, does not actually work
SumOfMass = sum(objList[:].mass)
CenterOfMassX = sum(objList[:].x.*objList[:].mass)/SumOfMass
除非放弃反
for
偏见,否则不能完成最后两行。在使用py2k(你在用哪个?),
map(func, alist)
相当于[func(v) for v in alist]
,即返回一个列表。你需要两个标量答案,而不是一个或两个向量。你有什么想法?为什么要用map函数计算质心?在如果您确实坚决反对使用} 函数。E、 G.:
for
,那么可以使用operator
模块中的^{但是,这样做违背了Python风格的要求(使用camelCase变量也一样——通常将它们命名为
like_this
)。如果您需要访问的对象已经是以sequence元素作为其唯一参数的函数的形式,那么使用map
或多或少是可以接受的。换句话说,如果您可以调用map(some_function, sequence)
,而不必像上面那样跳过任何一个环来得到some_function
,那么就可以了。在对于其他情况(大多数情况下),使用list-comprehension样式被认为是可取的或强制性的,如其他一些答案中所示。在
另外,您可以这样填充
^{pr2}$objList
:注意,
range
只接受整数参数。在p.S.
map
是for
循环。在相关问题 更多 >
编程相关推荐