正如问题所说,是否可以删除元素并将列表返回一行?
所以,如果我们说
a = [1, 3, 2, 4]
b = a.remove(1)
这会将b设置为NoneType,所以我想知道是否有办法做到这一点。
答案 0 :(得分:2)
我认为这样可行:
a = [1, 3, 2, 4]
b = (a.remove(1), a)[1]
这假设您想要做两件事:
修改强>
另一种选择:
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]
我认为这种方式应该更安全。