Pythonic修改列表的方法

时间:2015-09-01 19:06:10

标签: python list syntax semantics

是否有更多的pythonic方式告诉列表哪个部分必须留在哪个部分必须删除?

[1,2,3,6,7]

通缉名单:

wl = li[:-4]+li[-2:]

我可以这样做:

li[:-4,-2:]

我正在寻找像remove这样的东西(在一个陈述/命令中)

当然我可以做[3,4,5,6,7] 但它可以在很多情况下使用,例如:

通缉名单:

del li[0:2]

我可以li[2:]

但它更常见:

public void someMethod() {

    synchronized(bar) {
       // fully accessible before entering the other synchronized bar block
       // but not afterwards 
    }

}

2 个答案:

答案 0 :(得分:0)

除常规python列表外,NumPy arrays can be indexed by other sequence-like objects(除元组外)例如通过常规python列表或另一个NumPy数组。

import numpy as np

li = np.arange(1, 8)
# array([1, 2, 3, 4, 5, 6, 7])

wl = li[[0,1,2,5,6]]
# array([1, 2, 3, 6, 7])

当然,这使您现在遇到创建索引序列的问题(在此示例中为常规python列表[0,1,2,5,6]),这会让您回到正方形。 (除非您需要在相同索引处访问多个NumPy数组,因此您只需创建一次该索引列表,然后重新使用它。)

如果你有其他理由一般使用NumPy或特别是NumPy数组,你应该只考虑这个。

答案 1 :(得分:-1)

如果您希望输出列表遵循某个逻辑,则可以使用过滤器功能。

filter(lambda x: x > 2, li)

或者

filter(lambda x: x < 4 or x > 5, li)