从列表中删除元素并在同一语句中打印新列表
Remove element from list and print new list in the same statement
我正在使用 .remove()
函数从列表中删除一个元素,然后我想将这个新列表直接用于另一个函数,例如print()
函数。当我这样做时,我得到以下信息:
print([1, 2, 3])
# [1, 2, 3]
print([1, 2, 3].remove(2))
# None
因此,如果我想在 .remove()
等 Inplace 函数之后直接使用另一个函数(例如 print()
),那么矛盾的是我只能这样做:
print([1, 2, 3])
# [1, 2, 3]
x = [1, 2, 3]
x.remove(2)
print(x)
# [1, 3]
除了编写这个额外的源代码之外,还有什么更好的方法可以做到这一点吗?
显然,同样的问题适用于所有 Inplace 函数,我猜是其他函数的属性。
您可以为列表删除创建包装函数并调用该函数,而不是直接调用 list.remove。
def list_remove(l, elem):
l.remove(elem)
return l
print (list_remove(l, elem))
Disclaimer: I really don't recommend you to do this. But, this is just a method that came to my mind.
我真的不认为在单独的语句中写 list.remove()
和 print
有什么问题。
如果你真的想要 one 语句而不修改有问题的列表,你可以尝试 my_list[:my_list.index(value)]+my_list[my_list.index(value)+1:]
。这有缺点
- 你计算
my_list.index(value)
两次(3.8+ 不需要,见 PEP572)
- 你切片并添加,这不仅仅是删除
- 它不像
my_list.remove(val)
那样(接近)清晰
而且,
Disclaimer: I really don't recommend you to do this. But, this is just a method that came to my mind.
I really don't see a problem in writing list.remove() and print in separate statements.
--Jay
如果你真的想要,你可以使用 lambda 将它包装成一个单行代码:
print( (lambda x,y:x if x.remove(y) is None else None) ([1, 2, 3], 2) )
您需要一份其他两个答案的免责声明吗?简而言之:它不是一段可读性很强的代码。
我正在使用 .remove()
函数从列表中删除一个元素,然后我想将这个新列表直接用于另一个函数,例如print()
函数。当我这样做时,我得到以下信息:
print([1, 2, 3])
# [1, 2, 3]
print([1, 2, 3].remove(2))
# None
因此,如果我想在 .remove()
等 Inplace 函数之后直接使用另一个函数(例如 print()
),那么矛盾的是我只能这样做:
print([1, 2, 3])
# [1, 2, 3]
x = [1, 2, 3]
x.remove(2)
print(x)
# [1, 3]
除了编写这个额外的源代码之外,还有什么更好的方法可以做到这一点吗?
显然,同样的问题适用于所有 Inplace 函数,我猜是其他函数的属性。
您可以为列表删除创建包装函数并调用该函数,而不是直接调用 list.remove。
def list_remove(l, elem):
l.remove(elem)
return l
print (list_remove(l, elem))
Disclaimer: I really don't recommend you to do this. But, this is just a method that came to my mind.
我真的不认为在单独的语句中写 list.remove()
和 print
有什么问题。
如果你真的想要 one 语句而不修改有问题的列表,你可以尝试 my_list[:my_list.index(value)]+my_list[my_list.index(value)+1:]
。这有缺点
- 你计算
my_list.index(value)
两次(3.8+ 不需要,见 PEP572) - 你切片并添加,这不仅仅是删除
- 它不像
my_list.remove(val)
那样(接近)清晰
而且,
Disclaimer: I really don't recommend you to do this. But, this is just a method that came to my mind.
I really don't see a problem in writing list.remove() and print in separate statements.
--Jay
如果你真的想要,你可以使用 lambda 将它包装成一个单行代码:
print( (lambda x,y:x if x.remove(y) is None else None) ([1, 2, 3], 2) )
您需要一份其他两个答案的免责声明吗?简而言之:它不是一段可读性很强的代码。