我需要编写代码的帮助,该代码将帮助我获得python列表中每个列表的最低编号。然后必须从获得的最低值中以某种方式找到最低值中的最高值。我不允许调用内置函数min
或max
,也不能使用预写模块中的任何其他函数。我该怎么做呢?我已经尝试使用以下代码:
for list in ells:
sort.list(ells)
答案 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是完整的代码段。