python - py3k : case-insensitive list sorting - With or WIthout lambda?

标签 python sorting lambda python-3.x case-insensitive

在:

case-insensitive list sorting, without lowercasing the result?

我见过两种解决方案: (假设输入是 utf-8 字符串列表,例如 ['z1', 'A1', 'a0', 'bC'])

  • 没有 lambda:L.sort(key = str.lower);
  • 使用 lambda:L.sort(key = lambda s: s.lower());

有什么区别? 哪个更好或更“pythonic”?

(因为我标记的问题是关于 python-3.x。欢迎所有与特定于 python 2 的行为相关的评论,但请注意)

最佳答案

str.lowerstr 类型的未绑定(bind)方法,lambda s: s.lower() 是匿名函数。最终效果是相同的:对于 L 中的每个元素,调用 key 可调用函数,并传入该元素。

如果您不对字符串进行排序,效果 可能会有所不同。 str.lower 方法只适用于字符串,而匿名 lambda 函数将适用于任何具有 .lower() 方法的东西;例如,当您混合使用 bytesstr 时,请使用它。

我更喜欢第一个版本,它更短而且速度更快。此外,如果我的值不是字符串,它会抛出一个错误,这通常是您想要的。

关于python - py3k : case-insensitive list sorting - With or WIthout lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12922124/

相关文章:

python - 如何在 Python 脚本中调用系统命令时使用 cgi 表单输入作为变量?

python - 在 Django 应用程序中存储大数据的更好选择

Python Pandas 按二级索引(或任何其他级别)切片多索引

python - 在python中仅拟合具有多个参数的函数的2个参数

java - 如何使用 lambda 初始化字段

python - 在正则表达式中包含半空格 (\u200c)

python - 在 Windows 上安装 Bellatrix 时遇到困难

algorithm - 使用多个 CPU 查找最大数量的最短时间

javascript - HTML block 放置的逻辑

c# - lambda 表达式树的空检查