为什么我的 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']]
我正在从 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']]