从Python中删除未命名列表中的项目

时间:2013-02-19 15:22:18

标签: python

为什么以下语句在Python中没有返回没有'item'的列表?

list(something_convertible_to_list).remove('item')

我想使用上面的结构来避免显式命名列表,只是为了将它传递给函数,即:

operate_on_list(list(something_convertible_to_list).remove('item'))

def operate_on_list(my_list):
    # do_something
    print my_list
    return

这在Python中是否可行?

2 个答案:

答案 0 :(得分:9)

在python中,在适当位置操作的内置方法返回None以使其绝对清晰它们突变了一个对象。

当然,您可以自由地忽略此约定并编写自己的包装器:

def my_remove(lst,what):
   lst.remove(what)
   return lst

但我不推荐它。

作为旁注,如果你想做类似的事情:

list(something_convertible_to_list).remove('item')

但是返回列表,以下内容可能类似,非常有用:

[x for x in something_iterable if x != 'item']

确实返回一个列表,但list.remove只取走1 'item',这将构建一个新的列表,其中没有'item'

答案 1 :(得分:1)

您可以尝试以下内容:

my_list[:my_list.index('item')]+my_list[my_list.index('item')+1:]

虽然你在这里有两次搜索。

[item for item in my_sequence if item != 'item']

第一个将从列表中删除第一个'item',而第二个将删除每个'item'