gpt4 book ai didi

python - 如何比较子列表

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:16 32 4
gpt4 key购买 nike

我正在尝试从由子列表组成的列表中找出最小的数字。该程序的输出应如下所示:

least([[2,4,3],[1,7,9,4]])
in [[2,4,3],[1,7,9,4]] the least number is 1 found in sublist [1,7,9,4]

到目前为止,我的代码可以找到列表中的最小数字并打印出子列表,但我如何将它们组合在一起,这确实是我的问题。

# finds smallest number in list
def test(list1):
x = list1[0]
for i in list1:
if i < x:
x = i
print(x)

# prints out sublists
def test2(num):
for x in num:
for y in x:
print (y, end = " ")
print("")

“测试”的主体是在行之前还是之后

for y in x:

最佳答案

Python 有一个 built-in min function .但我想自己编写是一个很好的学习练习。

我们可以编写一个函数来查找包含最小元素的子列表,方法是创建您的 test 函数的修改版本。

关键思想是找到每个子列表的最小值,当我们找到新的最小值时,我们存储该最小值来自的子列表。

在下面的代码中,我将函数名称从 test 更改为 minimum 以使其更有意义。

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)

输出

In [[2, 4, 3], [1, 7, 9, 4], [6, 7, 5]] the least number is 1 found in sublist [1, 7, 9, 4]

但是,我们可以通过使用内置的 min 函数来为我们找到最小的子列表,以更紧凑的方式编写它。这里的技巧是我们让 min 调用自己来找到每个子列表中的最小项,然后使用这些最小值来决定哪个子列表是最小项。

def least(list2d):
minseq = min(list2d, key=min)
x = min(minseq)
print('In {} the least number is {} found in sublist {}'.format(list2d, x, minseq))

这个版本有点低效,因为它计算了两次具有最小项的子列表的最小值。为避免这种情况,我们可以向 min 传递一个生成器表达式:

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))

该生成器表达式创建每个子列表及其最小值的元组,然后将这些元组传递给外部 min 调用,以找到包含最小值的元组。如果 2 个或更多元组并列最小值,则比较元组本身以决定获胜者。

关于python - 如何比较子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42197359/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com