为什么我的 python lambda 函数不起作用?

why are my python lambda functions not working?

我正在从 doc 文件优化我的数据库填充代码,我通过用映射的 lambda 函数替换 for 循环来实现这一点。它正在工作,但随后停止了。这个例子:

rawdata1 = sorted(map(lambda i: rawdata1.append(i.split('$$$')), rawdata))
# for i in rawdata:
#     rawdata1.append(i.split('$$$'))

显示以下错误:

TypeError: '<' not supported between instances of 'NoneType' and 'NoneType'

但是当我取消对循环的注释并注释 lambda 时,一切都很好。我做错了什么?

.append() 是就地更新,returns None,因此您当前的生成器正在创建 None 的列表,无法通过 sorted().

除此之外,您不需要使用 map() 跟踪新拆分的项目,因为它是一个被馈送到 sorted().

的生成器

尝试:

>>> my_list = ["a,a", "b,b", "c,c", "a,b"]
>>> sorted(map(lambda i: i.split(","), my_list))
[['a', 'a'], ['a', 'b'], ['b', 'b'], ['c', 'c']]

或者使用生成器表达式(我的首选方法):

>>> my_list = ["a,a", "b,b", "c,c", "a,b"]
>>> sorted(i.split(",") for i in my_list)
[['a', 'a'], ['a', 'b'], ['b', 'b'], ['c', 'c']]