我正在尝试编写一个函数来查找嵌套列表的最小值。我已经编写了代码,但是出现了一个错误,我不能在整数和列表之间使用<。有任何想法吗?我不能使用任何内置函数。
def minimumVal(Y):
if len(Y) == 1:
return Y[0]
minimum = Y[0]
if minimum < minimumVal(Y[1:]):
return minimum
else:
return minimumVal(Y[1:])
答案 0 :(得分:1)
我的第一个想法是使用itertools折叠列表,但是由于您无法使用内置函数,因此这是一种有效的草率方法:
l = [2, 3, 4, 5, 6, [3, 4, 5, 10], [15, 4, 9, 8]]
minimum = []
for sublist in l:
try:
for num in sublist:
if len(minimum) == 0:
minimum.append(num)
else:
if num < minimum[0]:
minimum[0] = num
except:
if len(minimum) == 0:
minimum.append(sublist)
else:
if sublist < minimum[0]:
minimum[0] = num
print(minimum[0])
输出:2
如果您不能使用len(),这是另一个尝试/例外的选项:
l = [2, 3, 4, 5, 6, [3, 4, 5, 10], [15, 4, 9, 8]]
minimum = []
for sublist in l:
try:
for num in sublist:
try:
if num < minimum[0]:
minimum[0] = num
except IndexError:
minimum.append(num)
except:
try:
if sublist < minimum[0]:
minimum[0] = sublist
except IndexError:
minimum.append(sublist)
print(minimum[0])
输出:2
最后一个选项,如果您不能使用内置函数进行追加,则可以执行以下操作:
l = [3, 4, 5, 6, 2, [3, 4, 5, 10], [15, 4, 9, 8]]
minimum = ['place holder']
for sublist in l:
try:
for num in sublist:
if minimum[0] != 'place holder':
if num < minimum[0]:
minimum[0] = num
else:
minimum[0] = num
except:
if minimum[0] != 'place holder':
if sublist < minimum[0]:
minimum[0] = sublist
else:
minimum[0] = sublist
print(minimum[0])
输出:2