2

私はリストを持っています、言ってみましょう:

test = [False, False, 2, False, False, False, 3, False, False]

そして、このメンバーが2に等しくない限り、このリストのすべてのメンバーをFalseに割り当てたいので、結果は次のようになります:

test = [False, False, 2, False, False, False, False, False, False]

私は試した :

test = [False for i in test if i !=2]

しかし、結果は次のとおりです。

[False, False, False, False, False, False, False, False]

そして私は関数を定義しようとします:

def set_False(lst):
     for i in lst:
         if i != 2:
            i = False
    return lst

そして私が適用するとき:

test = set_False(test)

結果は次のとおりです。

[False, False, 2, False, False, False, 3, False, False]

コードを配置している環境で enumerate を使用できないので、何か提案はありますか?

ありがとう

4

3 に答える 3

11

これは

[False if i !=2 else 2 for i in test]

それ以外の場合は、2に等しいときに要素全体をスキップします。

于 2012-11-16T13:47:08.713 に答える
3

あなたの場合、その場での変更は次のように行うことができます。

   for i in range(len(lVals)):
       if lVals[i] != 2:
           lVals[i] = False
于 2012-11-16T13:46:58.907 に答える
1

List comprehensions might be the most pythonic way to achieve your goal :

myList = [False, False, 2, False, False, False, 3, False, False]
myFilteredList = [False if i !=2 else i for i in myList]

If you do not want to use such a syntax, another approch is to use a mapping function :

def myFilter(i):
   return False if i!=2 else i

myList = [False, False, 2, False, False, False, 3, False, False]
myFilteredList = map( myFilter, myList )
于 2012-11-16T14:05:54.383 に答える