我正在从文档文件优化我的数据库填充代码,我正在通过用映射的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'
但是当我取消for循环注释并注释lambda时,一切都很好。我做错了什么?
.append()
是一个就地更新,并返回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']]