簡體   English   中英

從Python中刪除未命名列表中的項目

[英]Removing items from unnamed lists in 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中可行嗎?

在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只會list.remove 1個'item' ,這將構建一個沒有'item'的新列表。

您可以嘗試以下方式:

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

雖然你在這里有兩個搜索。

要么

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

第一個將刪除列表中的第一個'item' ,而第二個將刪除每個'item'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM