所以如问题所述,是否可以删除元素并将列表返回到一行?删除一个元素并在一行中分配列表
所以,如果让我们说
a = [1, 3, 2, 4]
b = a.remove(1)
这将设置b等于NoneType,所以我在想,如果有一种方法来做到这一点。
所以如问题所述,是否可以删除元素并将列表返回到一行?删除一个元素并在一行中分配列表
所以,如果让我们说
a = [1, 3, 2, 4]
b = a.remove(1)
这将设置b等于NoneType,所以我在想,如果有一种方法来做到这一点。
我想这会工作:
a = [1, 3, 2, 4]
b = (a.remove(1), a)[1]
这是假设你想要做的两件事情:通过移除元素
EDIT
另一种替代方法:
b = a.remove(1) or a
两者都是相当混乱;我不确定我会在代码中使用。
EDIT 2
既然你提到希望在拉姆达使用这个......你知道,你可以使用一个名为实际功能,您否则将使用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行中编写解决方案。 – TheAmateurProgrammer
啊,如果目标是“代码高尔夫球”,那么我认为'或'变种可能是最短的。 – smarx
由于remove
回报None
,你可以只or a
它:
>>> a = [1, 3, 2, 4]
>>> a.remove(1) or a
[3, 2, 4]
其他人首先回答,因此我接受了他的回答,但是ty – TheAmateurProgrammer
列表a
分配给b
:
b = a.remove(1) or a
a is b # True
使用b
是使用a
一样的,如果你得到一个最终的物体,像[b, c, d]
这是危险的,因为如果你更新此列表的元素之一,所有的元素将更新了。
对比:
import copy
b = a.remove(1) or copy.copy(a)
我觉得这种方式应该是更安全的。
这是像'list.remove()'返回'None'这样的就地操作的标准行为。否则会是非标准的行为。你真的绝对100%确定你需要这样做吗? – TigerhawkT3
@ TigerhawkT3我不希望使用删除,只是其他可以复制它的东西。我想这样做,因为我希望能够在lambda中使用remove。 – TheAmateurProgrammer
什么阻止你在'lambda'中使用'remove()'? – TigerhawkT3