You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python入门:如何不使用lambda函数实现按字符串长度排序列表

Python排序问题解答

关于AttributeError: 'int' object has no attribute 'sort'的原因

你的理解方向是对的,但更精准的原因是:你调用sort()方法的对象是整数类型,而sort()是Python列表的专属内置方法,整数这类非列表对象根本没有这个方法。只有列表才能调用sort(),如果误将整数当成列表调用该方法,就会触发这个错误。

不使用lambda实现按字符串长度排序原列表

要实现和strings.sort(key=lambda x:len(x))一样的效果,有两种简单方式:

方法1:定义普通函数作为key参数

先写一个专门获取字符串长度的函数,把它传给sort方法的key参数即可:

def get_str_length(s):
    return len(s)

# 示例列表
strings = ["apple", "banana", "cherry", "date"]
# 按字符串长度排序原列表
strings.sort(key=get_str_length)
print(strings)  # 输出: ['date', 'apple', 'cherry', 'banana']

方法2:直接传入len函数(更简洁)

其实len本身就是一个函数,直接把它传给key参数就行,完全不需要额外定义函数或者lambda:

strings = ["apple", "banana", "cherry", "date"]
strings.sort(key=len)
print(strings)  # 同样得到按长度排序的结果

如果不想修改原列表,而是生成一个新的排序后的列表,用sorted()函数的用法完全一致:

sorted_strings = sorted(strings, key=len)

内容的提问来源于stack exchange,提问作者박경덕

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:55:27