我有一个清单:
list1 = [123, 'xyz', 'zara', 'abc']
print "Max value element : ", max(list1);
它给出:
Max value element : zara
请解释一下如何对字符串列表和数字列表进行比较。
这实际上是一个很好的问题,答案取决于你使用的是 Python2.x 还是 Python3.x …以及你使用的 Python 实现1。
请参见 此处 了解关于 Python 如何比较不同类型的描述。该链接已经讲得非常透彻了,但作为一个快速摘要:
1从存在如此多的不确定性中可以看出,这并不是一个真正明确的情况,因此您应该尽量避免。
TypeError
错误;但是,其他 Python 实现可以自由地从你的示例中返回 123
。哪种类型在排序中排在第一位是“任意的”。 - mgilsonmax(list1, key=lambda x:(type(x), x))
这样的东西,这是避免对那些类型的事物进行排序的一个很好的理由。 - John La Rooy它按字母顺序“排序”单词,并返回字母表中最后面的一个(仅对列表中的项目进行排序,不改变其顺序,因此我在引号内写下了“排序”):
list1 = ["kyle", "darius"]
max(list1)
--> 返回kyle,因为k在d之后
list2 = ["kaula", "kzla", "kayla", "kwala"]
max(list2)
--> 返回kzla,因为kz在字母表中排在ka和kw之后
list3 = ["kyle", "darius", "janna", "set", "annie", "warwick", "bauuuuuu"]
max(list3)
--> 返回 warwick
我正在使用 Python 3.7,当我尝试将字符串与数字混合使用时:
list4 = [13341412, "zara", "jane", "kada"]
max(list4)
我遇到了一个错误:
Traceback (most recent call last): File "", line 1, in TypeError: '>' not supported between instances of 'str' and 'int'
在Python 3.7中,您不能混合使用整数和字符串。
list1=['2020','4','890','70','891','898']
max(list1)
--> 返回 898
如果仅有数字字符串,它将比较第一个最大数字,如果有两个(在这种情况下是以8开头的三个)- 它将查找同一数字的第二个数字并继续比较,直到找到更大的数字。因此,返回898。
b=['79.68', '9.11', '5.75']
max(b)
--> '9.11'
[tuple(ord(j) for j in i) for i in b]
--> [(55, 57, 46, 54, 56), (57, 46, 49, 49), (53, 46, 55, 53)]
除了其他答案之外,我想补充的是,在Python 3中,对于字符串列表的最大值会给出以下输出:-
l=["pl","cl pi"]
print(max(l))
#OUTPUT --> pl
这是由于 Python 3 中 max 函数的检查造成的。max 函数会检查所有字符串的第一个字符,并找到最高的(按 ASCII 顺序),然后将其作为输出返回!