当前位置:  开发笔记 > 编程语言 > 正文

Python:对于每个列表元素,在列表中应用一个函数

如何解决《Python:对于每个列表元素,在列表中应用一个函数》经验,为你挑选了2个好方法。

鉴于[1,2,3,4,5],我该怎么办呢

1/1, 1/2, 1/3,1/4,1/5, ...., 3/1,3/2,3/3,3/4,3/5,.... 5/1,5/2,5/3,5/4,5/5

我想存储所有结果,找到最小值,并返回用于找到最小值的两个数字.所以在我上面描述的情况下,我想回来(1,5).

所以基本上我想做点什么

每个元素i列表中的映射跨所有元素一些功能列表中,以ij作为参数结果存储在主列表,发现在主列表中的最小值,并返回参数i,j用于计算该最小值.

在我真正的问题中,我有一个列表对象/坐标,我使用的函数采用两个坐标并计算欧氏距离.我试图找到任意两点之间的最小欧氏距离,但我不需要花哨的算法.



1> Kiv..:

你可以使用list comprehensions和min()(Python 3.0代码)来做到这一点:

>>> nums = [1,2,3,4,5]
>>> [(x,y) for x in nums for y in nums]
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5)]
>>> min(_, key=lambda pair: pair[0]/pair[1])
(1, 5)

请注意,要在Python 2.5上运行它,您需要使其中一个参数成为浮点数,或者这样做,from __future__ import division使1/5正确等于0.2而不是0.



2> Triptych..:

如果我认为您想要从列表中找到所有可能的2个元素对的函数的最小值,那是正确的...

l = [1,2,3,4,5]

def f(i,j):
   return i+j 

# Prints min value of f(i,j) along with i and j
print min( (f(i,j),i,j) for i in l for j in l)

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有