栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

嵌套列表上的最小/最大函数如何工作?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

嵌套列表上的最小/最大函数如何工作?

如何在Python中比较列表和其他序列?

从字典上比较Python中的列表(和其他序列),而不是基于任何其他参数。

可以将序列对象与具有相同序列类型的其他对象进行比较。比较使用 字典
顺序:首先比较前两个项目,如果它们不同,则确定比较的结果;如果它们相等,则比较下两个项目,依此类推,直到用尽任何一个序列。


什么是字典排序?

从Wikipedia页面上的字典排序

词典顺序或词典顺序(也称为词典顺序,词典顺序,字母顺序或词典产品)是对单词字母顺序基于其组成字母的字母顺序的方式的概括。

min
函数返回 iterable中
的最小值。因此,该词的词典价值
[1,2]
最小。您可以使用
[1,2,21]

>>> my_list=[[1,2,21],[1,3],[1,2]]>>> min(my_list)[1, 2]

在这种情况下会发生什么
min

进行明智的选择

my_list
,首先
[1,2,21]
[1,3]
。现在从文档

如果要比较的两个项目本身 是相同类型的序列 ,则按字典顺序进行 递归 比较。

因此的值

[1,1,21]
是小于
[1,3]
,由于第二元件
[1,3]
,其为,
3
按字典顺序较高
比的第二元素的值
[1,1,21]
,这是,
1

现在比较

[1,2]
[1,2,21]
,并从文档中添加另一个参考

如果一个序列是另一个序列的 初始子序列 ,则 较短的序列是较小的 (较小的) 序列

[1,2]
是的初始子序列
[1,2,21]
。因此,的总价值
[1,2]
要小于的价值
[1,2,21]
。因此
[1,2]
返回为输出。

这可以通过使用

sorted
函数来验证

>>> sorted(my_list)[[1, 2], [1, 2, 21], [1, 3]]

如果列表包含多个最小元素怎么办?

如果列表包含重复的min元素 ,则返回第一个

>>> my_list=[[1,2],[1,2]]>>> min(my_list)[1, 2]

可以使用

id
函数调用来确认

>>> my_list=[[1,2],[1,2]]>>> [id(i) for i in my_list][140297364849368, 140297364850160]>>> id(min(my_list))140297364849368

我需要怎么做才能防止字典比较
min

如果所需的比较 不是字典式的,

key
可以使用参数(如Padraic所述)

min
函数还有一个名为的 附加可选参数
key
。该
key
参数具有一个函数。

可选的key参数指定一个用于的单参数排序函数

list.sort()
。如果提供了key参数,则必须采用关键字形式(例如
min(a,b,c,key=func)
)。

例如,如果需要 按长度最小的元素,
则需要使用该

len
函数。

>>> my_list=[[1,2,21],[1,3],[1,2]]>>> min(my_list,key=len) # Notice the key argument[1, 3]

如我们所见,第一个最短元素在这里返回。


如果列表是异类的怎么办?

直到Python2

如果列表是异类 类型的名称,
则考虑进行排序,请选中比较,

除数字外,其他类型的对象均按其 类型名称 排序 __

因此,如果您将an

int
和a放在
list
那里,您将获得整数值,该整数值的最小值
i
小于
l
。同样
'1'
,这两者的价值都将更高。

>>> my_list=[[1,1,21],1,'1']>>> min(my_list)1

Python3及更高版本

但是,这种令人困惑的技术已在 Python3 中删除。 现在

TypeError
_它 _引发一个 。阅读Python3.0的新增功能

排序比较操作符(

<
<=
>=
>
)提出一个
TypeError
例外,当操作数没有意义的自然顺序。因此,这样的表达式
1 <''
0 > None
或者
len <= len
不再有效,并且如
None <None
加薪
TypeError
,而不是返回
False
。必然的结果是, 对异构列表进行排序不再有意义-所有元素必须彼此可比

>>> my_list=[[1,1,21],1,'1']>>> min(my_list)Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: unorderable types: int() < list()

但是它适用于 Comparable类型 ,例如

>>> my_list=[1,2.0]>>> min(my_list)1

在这里我们可以看到

list
包含
float
值和
int
值。但是作为
float
int
是可比较的类型,
min
函数在这种情况下有效。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638581.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号