mar*_*ers 3 python list-comprehension
input = "foo ,,bar ,baz,"
tags = [x.strip() for x in input.split(',') if len(x.strip()) > 0]
Run Code Online (Sandbox Code Playgroud)
期望的输出显然是一个没有空字符串的列表.
问题在于微观优化的精神; 有没有办法让strip()候选人x两次,即一次为测试,一次为追加?
要改写一下,你可以在表达式中生成一个值,这些值可以附加到列表而不需要两次工作吗?
创建一个新字符串总是比扫描它更昂贵.x.isspace()在遇到第一个not space字符后返回
tags = [x.strip() for x in input.split(',') if x and not x.isspace()]
Run Code Online (Sandbox Code Playgroud)