如何编写代码以获取python列表中每个列表的最小值?

时间:2018-10-13 03:11:25

标签: python python-3.x

我需要编写代码的帮助,该代码将帮助我获得python列表中每个列表的最低编号。然后必须从获得的最低值中以某种方式找到最低值中的最高值。我不允许调用内置函数minmax,也不能使用预写模块中的任何其他函数。我该怎么做呢?我已经尝试使用以下代码:

for list in ells:
    sort.list(ells)

4 个答案:

答案 0 :(得分:2)

由于不允许使用内置函数,因此可以在迭代子列表时使用变量来跟踪到目前为止找到的最小数字,而在变量中则跟踪另一个变量以跟踪最高的数字。到目前为止找到的数字,您需要遍历列表:

CC=gcc
CFLAGS=-Wall -std=c99 -I headers

OBJS += build/main.o
OBJS += build/carFunctions.o
OBJS += build/linkedList.o
OBJS += build/fileManage.o

build/main: $(OBJS)
    $(CC) $(CFLAGS) $(OBJS) -o main

build/%.o: source/%.c
    $(CC) $(CFLAGS) -c $< -o $@

clean:
    rm -f build/*.o build/main

这将输出:l = [ [2, 5, 7], [1, 3, 8], [4, 6, 9] ] highest_of_lowest = None for sublist in l: lowest = None for item in sublist: if lowest is None or lowest > item: lowest = item if highest_of_lowest is None or highest_of_lowest < lowest: highest_of_lowest = lowest print(highest_of_lowest)

答案 1 :(得分:2)

a=[6,4,5] 
b=[8,3,9] 
listab=[a,b] 
sorted([sorted(x)[0] for x in listab])[-1] 
  

输出> 4

您可以对任意数量的列表执行此操作。这也避免了必须编写自己的min和max函数。

答案 2 :(得分:2)

您可以遍历列表并与变量进行比较,此处使用lo,如果项目小于当前数量,则将其分配为新的lo。重复此过程之后,但使用hi和相反的逻辑。

lst = [[1, 2, 3], [4, 5, 6,], [7, 8, 9]]

lows = []
for i in lst:
    lo = None
    for j in i:
        if lo == None: # to get initial lo
            lo = j
        elif j < lo:
            lo = j
    lows.append(lo)

hi = 0
for i in lows:
    if i > hi:
        hi = i

print(hi)

答案 3 :(得分:1)

我认为最干净的解决方案是写:

max([min(inner_list) for inner_list in list_of_lists])

但是您说您不允许使用内置的max和min。好吧...我们为什么不自己实现它们呢?在这里,您去了:

def min(iterable):
    result = iterable[0]
    for element in iterable:
        if element < result:
            result = element 
    return result

def max(iterable):
    result = iterable[0]
    for element in iterable:
        if element > result:
            result = element
    return result

现在,这可能不是世界上最健壮的min和max(并且他们可以肯定会使用更多代码重用),但是它们简短,清晰,并且会很好用。同样,这将使代码的主行不存在循环,这使读取代码更加困难。

另外,作为一个额外的好处(您可能在这里不需要,但这是软件设计中的一种很好的做法)---您的代码具有一些SRP的外观,只需要替换max和min无需触及程序的实际逻辑。

Here是完整的代码段。