列表中最小元素到最大元素的距离(列表内)

时间:2015-10-21 00:09:25

标签: python python-3.x

我有一个列表,the_list = [[3, 2, 0, 1, 4, 5], [4, 2, 1, 3, 0, 5], [0, 1, 2, 3, 4, 5], [1, 5, 2, 4, 3, 0]]。如何找出列表中从最小元素到最大元素的距离。例如,对于the_list中的第一个子列表,该索引为最小元素02,最大元素5的索引为5。因此,两个索引之间的距离为3因此我得到以下输出:

3
1
5
0

编辑:对于最后一个输出,它是0,因为列表在那里结束并假设列表只查找绑定到右边的距离

3 个答案:

答案 0 :(得分:1)

试试这个:

lst = [[3, 2, 0, 1, 4, 5], [4, 2, 1, 3, 0, 5], [0, 1, 2, 3, 4, 5], [1, 5, 2, 4, 3, 0]]
[max(s.index(max(s)) - s.index(min(s)), 0) for s in lst]
=> [3, 1, 5, 0]

答案 1 :(得分:1)

>>>list(map(lambda x: x.index(max(x)) - x.index(min(x)) if x.index(max(x)) - x.index(min(x)) > 0 else 0 ,l))
[3, 1, 5, 0]

答案 2 :(得分:0)

我不太了解python,但算法可能与此类似(在伪代码中):

Foreach list in the_list do begin 
    Min:=maxint;
    MinPos:=0;
    Max:=0;
    MaxPos:=0;
    For I := 0 to list.length do begin 
        If list[i] > Max then begin
            Max := list[i];
            MaxPos := i;
        End;
        If list[i] < Min then begin
            Min := list[i];
            MinPos := i;
        End;
    End;
    If MinPos  < MaxPos then
        Write MaxPos - MinPos;
    Elsewhere
        Write 0;
End;

(对不起,我在手机上写了这篇文章,我无法正确格式化文字)。