gpt4 book ai didi

返回 bool 值的 Python 排序 lambda 函数

转载 作者:行者123 更新时间:2023-12-05 02:03:50 24 4
gpt4 key购买 nike

所以,我有一个名字列表,我正在尝试对列表进行排序,以便在列表中首先定位以元音开头的名字,然后再定位不以元音开头的名字在它们之后并按字母顺序排序。

为此,我编写了以下代码,然而,结果并不是我所期望的:

a = ["anna", "ollie", "tim", "bob", "trevor", "susan"]
print(sorted(a, key=lambda x: (x[0] in 'aeiou', x)))

结果:

['bob', 'susan', 'tim', 'trevor', 'anna', 'ollie']

我认为根据我的代码,应该首先定位名称:“anna”和“ollie”,然后是其余名称,因为这两个名称将在我的 lambda 函数的第一部分返回 true。

如果有人能解释我为什么会得到这个结果以及我需要做什么才能得到我想要的结果,我将不胜感激。

谢谢!!

最佳答案

原因是:

x[0] in 'aeiou' 

['anna', 'ollie'] 返回 1(或 True),其余返回 0(或 False)。所以 0 < 1,因此输出。

改为这样做:

print(sorted(a, key=lambda x: (x[0] not in 'aeiou', x)))

输出

['anna', 'ollie', 'bob', 'susan', 'tim', 'trevor']

有关比较的说明,请查看 documentation ,下面的引述来自那里:

Tuples and lists are compared lexicographically using comparison ofcorresponding elements. This means that to compare equal, each elementmust compare equal and the two sequences must be of the same type andhave the same length.

另外,对于 bool 值的行为,我建议使用以下 link , 引用:

Boolean values are the two constant objects False and True. They areused to represent truth values (although other values can also beconsidered false or true). In numeric contexts (for example when usedas the argument to an arithmetic operator), they behave like theintegers 0 and 1, respectively.

关于返回 bool 值的 Python 排序 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64844566/

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