2016-07-26 5 views
-1

質問によれば、要素を削除してリストを1行に戻すことは可能ですか?これはNoneTypeするBを設定しますので、これを行う方法があります場合、私は思っていた要素を削除してリストを1行に割り当てる

a = [1, 3, 2, 4] 
b = a.remove(1) 

を言うことができますのであれば

+3

'list.remove()'のようなインプレース操作では 'None'を返すのが標準的な動作です。それ以外の場合は、非標準的な動作になります。あなたは本当に絶対にあなたがこれを行う必要があると確信していますか? – TigerhawkT3

+0

@ TigerhawkT3ええ私は削除を使用することを期待していない、それを複製することができるだけです。私はラムダで削除を使用できるようにしたいので、これを実行したい。 – TheAmateurProgrammer

+1

'lambda'で' remove() 'を使用するのを止めるにはどうしたらいいですか? – TigerhawkT3

答えて

2

私はこれがうまくいくとします

a = [1, 3, 2, 4] 
b = (a.remove(1), a)[1] 

これはあなたが両方の事をしたいと仮定している:

  1. 要素を除去することにより、元のリストを変更し、
  2. 戻ります(今修正された)リスト。

EDIT

別の方法:

b = a.remove(1) or a 

両方はかなり混乱しています。私はコードでどちらかを使用するかどうかはわかりません。

EDIT 2

あなたはラムダでこれを使用したい言及したので...あなたは、実際の名前の関数にあなたがそれ以外の場合は、ラムダを使用するすべての時間を使用することができることを知っていますか?

など。代わりに、このような何かを:

map(lambda x: x.remove(1) and x, foo) 

あなたはこれを行うことができます。

def remove_and_return(x): 
    x.remove(1) 
    return x 

map(remove_and_return, foo) 
+0

これは実用コードでは使用されず、1行に解決策を書き込もうとしても心配しないでください。 – TheAmateurProgrammer

+0

ああ、目標が「コードゴルフ」の場合、「または」の変形が最短になる可能性が高いと思います。 – smarx

2

remove以来戻り、あなたはできるだけor aそれへNoneabに割り当てる

>>> a = [1, 3, 2, 4] 
>>> a.remove(1) or a 
[3, 2, 4] 
+0

他の人が最初に答えたので私は彼の答えを受け入れたが、ty – TheAmateurProgrammer

0

リスト:

b = a.remove(1) or a 
a is b  # True 

bを使用すると、aを使用するのと同じである、とあなたが[b, c, d]のような最終的なオブジェクトを取得する場合は、このリスト要素のいずれかを更新した場合、すべての要素がすぎを更新するためには、危険です。私はこの方法がより安全であるべきだと思う

import copy 
b = a.remove(1) or copy.copy(a) 

は、と比較してください。

関連する問題