Discuss / Python / 小疑问

小疑问

Topic source

def not_empty(s): return s and s.strip()

print(list(filter(not_empty, ['A', '', ' B', None, 'C', ' ']))) 这段代码我在‘B’里加了个空格 按道理输出的结果应该是没有空格的吧,但我输出也是有空格的

def not_empty(s):
    return s and s.strip()

print(list(filter(not_empty, ['A', '', ' B', None, 'C', ' '])))

这里的廖老师给的函数只能说删除列表中的空的字符串或者空元素,并不能将普通字符串中的空格去除。

比如你所说的' B',当not_empty作用于它时,返回的是' B' and 'B',这么看and两边都不为空或者是FALSE,所以返回的是and右边的值,即为真,然后更具filter的原理,如果' B'经过运算not_empty结果为真,则保留数据' B',反之则去除。

所以这个函数只能起到筛选数据的作用,并不能对元素进行修改

廖雪峰

#3 Created at ... [Delete] [Delete and Lock User]

filter是筛选元素,map才能修改元素,你的问题要两步:

l1 = filter(not_empty, L)
l2 = map(str.strip, l1)
print(list(l2))

  • 1

Reply