4

'item'次のステートメントがPythonなしでリストを返さないのはなぜですか?

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で可能ですか?

4

2 に答える 2

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.remove1だけを取り除く'item'場合、これはリストを含まない新しいリストを作成し'item'ます。

于 2013-02-19T15:24:12.610 に答える
1

次のようなことを試すことができます:

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

ここでは2つの検索がありますが。

また

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

'item'最初のものはリストから最初のものを削除し、2番目のものはすべてを削除します'item'

于 2013-02-19T15:27:52.677 に答える