l = [1,2,3,4,5,6,7,8,9]
这个列表 能不能用列表生成式 只写一行拆成大于 5 的 跟小于等于 5 的 两个列表
我只知道 x = [x for in l if x >5 ]
能不能写一行 x,y = [xxxxxxxxxxxx]
这样???
|  |      1ctro15547      2018-03-06 12:27:58 +08:00 x,y = [[x for x in l if x > 5 ],[y for y in l if y <= 5]]  #[6, 7, 8, 9] [1, 2, 3, 4, 5] 哈哈哈笨办法 | 
|  |      4prolic      2018-03-06 13:17:45 +08:00 x,y = map(lambda y: filter(lambda z:z,list(y)),zip(*[(x,None) if x > 5 else (None,x) for x in l])) | 
|      6jasonailu      2018-03-06 13:59:51 +08:00  1 x, y = [[x for x in l if func(x)] for func in (lambda x:x<=5, lambda x:x>5)] | 
|  |      7hbkdsm      2018-03-06 14:02:00 +08:00 Readability counts; Write plain code, not clever code | 
|      8jakeyfly OP 楼上大佬们都太 6 了 不过这样定 阅读性太差了 我还是老实的 FOR 循环吧 | 
|  |      10ctro15547      2018-03-19 08:26:16 +08:00 l = [1,2,3,4,5,6,7,8,9] x,y = [filter(lambda k: k > 4, l), filter(lambda k: k <= 4, l)] |