Given `[1,2,3,4,5]`

, how can I do something like

```
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
```

I would like to store all the results, find the minimum, and return the two numbers used to find the minimum. So in the case I've described above I would like to return `(1,5)`

.

So basically I would like to do something like

for each element `i`

in the list
map some function across all elements in the list, taking `i`

and `j`

as parameters
store the result in a master list, find the minimum value in the master list, and return the arguments `i`

, `j`

used to calculate this minimum value.

In my real problem I have a list objects/coordinates, and the function I am using takes two coordinates and calculates the euclidean distance. I'm trying to find minimum euclidean distance between any two points but I don't need a fancy algorithm.

You can do this using list comprehensions and min() (Python 3.0 code):

```
>>> 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)
```

Note that to run this on Python 2.5 you'll need to either make one of the arguments a float, or do `from __future__ import division`

so that 1/5 correctly equals 0.2 instead of 0.

If I'm correct in thinking that you want to find the minimum value of a function for all possible pairs of 2 elements from a list...

```
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)
```

Licensed under: CC-BY-SA with attribution

Not affiliated with: Stack Overflow