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,提问作者박경덕
相关产品推荐
相关产品推荐

