alv*_*vas 19 python string iterator list strip
现在我一直在尝试在字符串列表上执行strip(),我这样做了:
i = 0
for j in alist:
alist[i] = j.strip()
i+=1
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
edu*_*ffy 31
您可能不应该将其list
用作变量名称,因为它是一种类型.而不管:
list = map(str.strip, list)
Run Code Online (Sandbox Code Playgroud)
这将把函数str.strip
应用于每个元素list
,返回一个新列表,并将结果存回list
.
kar*_*ikr 18
您可以使用列表推导
stripped_list = [j.strip() for j in initial_list]
Run Code Online (Sandbox Code Playgroud)
关于性能的一些有趣的讨论发生在这里,所以让我提供一个基准:
noslice_map : 0.0814900398254
slice_map : 0.084676027298
noslice_comprehension : 0.0927240848541
slice_comprehension : 0.124806165695
iter_manual : 0.133514881134
iter_enumerate : 0.142778873444
iter_range : 0.160353899002
Run Code Online (Sandbox Code Playgroud)
所以:
map(str.strip, my_list)
是最快的方式,它只是比comperhensions快一点.
map
或者itertools.imap
是否有一个你想要应用的函数(比如str.split)my_list[:] = map...
,切片表示法只引入一小部分开销,如果有多个对该列表的引用,可能会给你一些错误.