max()函数如何在python中的字符串列表上工作?

时间:2013-12-09 04:32:26

标签: python string list

我有一个清单:

list1 = [123, 'xyz', 'zara', 'abc']
print "Max value element : ", max(list1);

它给出了:

Max value element : zara

还请解释它如何在字符串列表和数字列表上进行比较。

4 个答案:

答案 0 :(得分:10)

这实际上是一个很好的问题,答案取决于你是使用python2.x还是python3.x ... 你正在使用哪个python实现 1 < / SUP>

有关python如何比较不同类型的说明,请参阅here。该链接几乎说明了您需要知道的所有内容,但作为快速摘要:

  • 相同类型的对象的比较就像您期望的那样。
  • 不同类型对象的比较按python2.x上的 name 类型排序,并在python3.x上引发错误(除非定义了自定义比较运算符。)
  • 旧样式类违反了所有规则,但不管怎样它们都不应该使用。

1 希望您可以通过不确定性的数量看出这个定义并不是很明确,因此您应该尽量避免这种情况。

答案 1 :(得分:2)

list1=['2020','4','890','70','891','898']
max(list1)

->返回898

如果只有数字作为字符串包含,它将比较第一个最大数字,如果有两个(在这种情况下:三个以8开头的数字)-

它将寻找相同数字的第二个数字,并继续比较直到找到更大的数字。 因此返回898

答案 2 :(得分:1)

十进制数的结果可能看起来很奇怪。所以,我只想提一下这些,为其他人节省一些时间。

b=['79.68', '9.11', '5.75']
max(b)
--> '9.11'

发生这种情况是因为它比较了每个字符串中对应字符的ascii,我们可以通过以下方式进行确认:

[tuple(ord(j) for j in i) for i in b]
--> [(55, 57, 46, 54, 56), (57, 46, 49, 49), (53, 46, 55, 53)]

答案 3 :(得分:-1)

命令”按字母顺序排列单词,返回字母列表底部的单词(对于记录,它不会更改顺序列表中的项目,这就是我在引号内写“订单”的原因:

list1 = ["kyle", "darius"]
max(list1) 

- &GT;返回 kyle ,因为 k 位于 d

之后
list2 = ["kaula", "kzla", "kayla", "kwala"]
max(list2) 

- &GT;返回 kzla ,因为 k ka kw 之后按字母顺序排列

list3 = ["kyle", "darius", "janna", "set", "annie", "warwick", "bauuuuuu"]
max(list3)

- &GT;返回warwick

我正在使用python 3.7,当我尝试将字符串与数字混合时:

list4 = [13341412, "zara", "jane", "kada"]
max(list4)

我收到错误:

  

Traceback(最近一次调用最后一次):文件“”,第1行,in    TypeError:'&gt;' 'str'和。实例之间不支持   'INT'

至少在python 3.7中,你不能将整数与字符串混合。