删除元素并将列表分配到一行

时间:2016-07-26 02:56:40

标签: python list

正如问题所说,是否可以删除元素并将列表返回一行?

所以,如果我们说

a = [1, 3, 2, 4]
b = a.remove(1)

这会将b设置为NoneType,所以我想知道是否有办法做到这一点。

3 个答案:

答案 0 :(得分:2)

我认为这样可行:

a = [1, 3, 2, 4]
b = (a.remove(1), a)[1]

这假设您想要做两件事:

  1. 删除元素
  2. 修改原始列表
  3. 返回(现已修改)列表。
  4. 修改

    另一种选择:

    b = a.remove(1) or a
    

    两者都相当令人困惑;我不确定我会在代码中使用它们。

    编辑2

    既然你提到想在lambda中使用它...你知道你可以在任何时候使用lambda来使用实际的命名函数吗?

    E.g。而不是像这样的东西:

    map(lambda x: x.remove(1) and x, foo)
    

    你可以这样做:

    def remove_and_return(x):
        x.remove(1)
        return x
    
    map(remove_and_return, foo)
    

答案 1 :(得分:2)

由于remove返回None,您只能or a

>>> a = [1, 3, 2, 4]
>>> a.remove(1) or a
[3, 2, 4]

答案 2 :(得分:0)

列出public init(data:Data, options opt: JSONSerialization.ReadingOptions = .allowFragments, error: NSErrorPointer = nil) { do { let object: AnyObject = try JSONSerialization.jsonObject(with: data, options: opt) self.init(object) } catch let aError as NSError { if error != nil { error?.pointee = aError } self.init(NSNull()) } } 分配给a

b

使用b = a.remove(1) or a a is b # True 与使用b是一样的,如果你得到像a这样的最终对象会很危险,因为如果你更新这个列表元素之一,那么所有元素都会更新

比较:

[b, c, d]

我认为这种方式应该更安全。