Question: i'm seeking for help in solving one problem...

Let's assume i got a list: 

```
list1 =[[1, 0, 2.83], [3, 1, 1.0], [5, 4, 2.83], [7, 0, 4.47], [6, 5, 4.24], [3, 2, 'x'], [4, 6, 'asd']

```

What i want to do is based on type of third element of inner lists, get filtered minimum value from these values, only if these are floats.

(It's totally fine if 3rd elements are same value, however i'm curious if that wont provide any exceptions - for me it would be the best if they would be picked even randomly)

Im trying something like this:

```
list1 = [[1, 0, 2.83], [3, 1, 1.0], [5, 4, 2.83], [7, 0, 4.47], [6, 5, 4.24], [3, 2, 'x'], [4, 6, 'asd']

something = min(filter(lambda x: x[2] is not isinstance(x[2], float) == True,list1))

```

... and by that im getting first element from that list which is: `[1, 0, 2.83]`, instead of `[3, 1, 1.0]` where the third element is lowest and is a float.

Answer: 
```
something = min((x for x in list1 if isinstance(x[2], float)), key=lambda x: x[2])

```

By the way, IMHO the most suitable data structure for this kind of situation would be a `list` of `tuple`s, since they constitute heterogeneous collections of fixed size (in this case triples), like this:

```
list1 = [(1, 0, 2.83), (3, 1, 1.0), (5, 4, 2.83), (7, 0, 4.47), (6, 5, 4.24), (3, 2, 'x')]

```
You can try this:

```
list1 =[[1, 0, 2.83], [3, 1, 1.0], [5, 4, 2.83], [7, 0, 4.47], [6, 5, 4.24], [3, 2, 'x'], [4, 6, 'asd']]
min_val = min(filter(lambda x:not isinstance(x[-1], str), list1), key=lambda x:x[-1])

```

Output:

```
[3, 1, 1.0]

```