我正在使用.remove()
函数从列表中删除一个元素,然后我想直接将此新列表用于另一个函数,例如print()
函数。当我这样做时,我得到以下信息:
print([1, 2, 3])
# [1, 2, 3]
print([1, 2, 3].remove(2))
# None
因此,如果我想在诸如print()
之类的Inplace函数之后直接使用另一个函数(例如.remove()
),那么矛盾的是,我只能这样做:
print([1, 2, 3])
# [1, 2, 3]
x = [1, 2, 3]
x.remove(2)
print(x)
# [1, 3]
有没有比编写此附加源代码更好的方法了?
很显然,所有Inplace函数和其他函数的属性都存在相同的问题。
答案 0 :(得分:0)
您可以为列表删除创建一个包装函数,然后调用该函数,而不是直接调用list.remove。
def list_remove(l, elem):
l.remove(elem)
return l
print (list_remove(l, elem))
免责声明:我真的不建议您这样做。但是,这只是我想到的一种方法。
我在单独的语句中写list.remove()
和print
确实没有问题。
答案 1 :(得分:0)
如果您确实想要一个语句而不修改相关列表,则可以尝试my_list[:my_list.index(value)]+my_list[my_list.index(value)+1:]
。这有缺点
my_list.index(value)
(3.8并不需要,请参见PEP572)my_list.remove(val)
那样清晰(近)然后
免责声明:我真的不建议您这样做。但是,这只是我想到的一种方法。
在编写list.remove()并在单独的语句中打印时,我真的没看到问题。
-杰伊
答案 2 :(得分:0)
如果您确实愿意,可以使用lambda将其包装为单层包装。
print( (lambda x,y:x if x.remove(y) is None else None) ([1, 2, 3], 2) )
您是否需要其他两个答案的免责声明的副本?简而言之:这不是一段易读的代码。