%%timeit
x = ['a', 'b', 'c', 'd']
y = x[:] # fastest way to copy
y.remove('c')
1000000 loops, best of 3: 405 ns per loop
%%timeit
x = ['a', 'b', 'c', 'd']
y = list(x) # not as fast copy
y.remove('c')
1000000 loops, best of 3: 689 ns per loop
%%timeit
x = ['a', 'b', 'c', 'd']
y = [n for n in x if n != 'c'] # list comprehension
1000000 loops, best of 3: 544 ns per loop
%%timeit
x = ['a', 'b', 'c', 'd']
i = x.index('c')
y = x[:i] + x[i + 1:]
1000000 loops, best of 3: 656 ns per loop
这个问题已经得到了回答,但我想指出的是,使用列表理解比使用
.remove()
慢得多。我的机器上的一些配置文件(使用Python2.7.6)。
如果你用最快的方式复制一个列表(它不是很可读),你将比使用列表理解快36%。但是,如果使用
list()
类(更常见的是Pythonic类)复制列表,那么您将比使用列表理解慢26%。真的,一切都很快。我认为可以提出这样的论点,即
.remove()
比list a list comprehension技术更具可读性,但它并不一定更快,除非您有兴趣放弃重复中的可读性。在这种情况下,列表理解的最大优点是它更加简洁(即,如果您有一个函数出于某种原因从给定列表中删除一个元素,它可以在1行中完成,而另一个方法需要3行)一些可读性的代价)。另外,当您不知道要删除的元素是否真的在列表中时,使用列表理解会更好。当
.remove()
将抛出ValueError
时,列表理解将按预期操作。如果不需要单独的
noclubs
相关问题 更多 >
编程相关推荐