>>> lst = [[2, 4, 3], [1, 7, 9, 4]]
>>> min_value_in_lst = min(min(sublist) for sublist in lst)
1
如果您想知道最小值的来源,只需创建一个循环:
^{pr2}$
全部功能:
def least(lst):
min_value_in_lst = min(min(sublist) for sublist in lst)
that_sublist = None
for sublist in lst:
if min_value_in_lst in sublist:
that_sublist = sublist
break
# print out the result
lists = [[2, 4, 3], [1, 7, 9, 4]]
min_list = None
min_value = lists[0][0] # initialse to the first item of the first list
for sublist in lists:
min_ = min(sublist)
if min_ < min_value:
min_value = min_
min_list = sublist
print("the least number is {} found in sublist {}".format(min_value, min_list))
def minimum(list1):
''' Finds smallest item in list1 '''
x = list1[0]
for i in list1:
if i < x:
x = i
return x
def least(list2d):
minseq = list2d[0]
x = minimum(minseq)
for seq in list2d[1:]:
i = minimum(seq)
if i < x:
x = i
minseq = seq
print('In {} the least number is {} found in sublist {}'.format(list2d, x, minseq))
# Test
data = [[2, 4, 3], [1, 7, 9, 4], [6, 7, 5]]
least(data)
def least(list2d):
x, minseq = min((min(seq), seq) for seq in list2d)
print('In {} the least number is {} found in sublist {}'.format(list2d, x, minseq))
简洁明了:
如果您想知道最小值的来源,只需创建一个循环:
^{pr2}$全部功能:
假设子列表只有一个级别的深度,您可以通过维护一个包含最小值的变量来完成此操作,另一个变量用于跟踪包含该值的列表:
Python有一个built-in ^{} function 。但我想自己写是一个很好的学习练习。在
通过创建
test
函数的修改版本,我们可以编写一个函数来查找包含最小元素的子列表。在关键的思想是找出每个子列表的最小值,当我们找到一个新的最小值时,我们存储最小值来自的子列表。在
在下面的代码中,我将函数名从
test
更改为minimum
,使其更有意义。在输出
^{pr2}$但是,我们可以使用内置的
min
函数为我们找到最小的子列表,从而以一种更简洁的方式编写它。这里的诀窍是让min
调用它自己来找到每个子列表中的最小项,然后使用这些最小值来确定哪个子列表是最小的。在这个版本效率稍低,因为它用最小的项计算子列表的最小值两次。为了避免我们可以传递
min
一个生成器表达式:该生成器表达式创建每个子列表及其最小值的元组,然后将这些元组传递给外部
min
调用,以便找到包含最小最小值的元组。如果两个或两个以上的元组并列为最小值,则比较这些元组本身以决定胜出者。在相关问题 更多 >
编程相关推荐