2

タイトルは少し奇妙に見えるかもしれませんが、Pythonで行う必要があることは次のとおりです。

リスト(L)とブール配列(A)があるとします。

L=[1,2,3,4] 
A=[True, False, True]

AがTrueとFalseで、AがFalseであるLを持つリストを作成する必要があります。

[[1,2,3,4], False, [1,2,3,4]]

のようなことを考えていたの
L and A
ですが、Lはスカラーではないのでうまくいかないようです。

Lをスカラーとして定義し、1〜2行のコードでそれを実現する方法はありますか?

ありがとう。

4

4 に答える 4

4

リスト内包表記を使用できます。

[L if i else False for i in A ]
于 2013-03-08T06:08:50.840 に答える
2

これを行うための非常に簡単な方法は次のとおりです。

newList = []
for x in A:
   if x is True:
       newList.append(L)
   else: 
       newList.append(False)

しかし、簡潔にしたかったので、ここにワンライナーがあります:

[L if x else x for x in A]
于 2013-03-08T06:07:20.900 に答える
1
map(lambda x: L if x else False, A)
于 2013-03-08T06:10:03.997 に答える
0

定義により、LandAはスカラーではありません。LA を反復処理し、スカラーの場所とスカラーの場所をTrue含むベクトルを返すスカラーを使用できます。FalseFalse

リスト内包表記の使用:

[L if a else False for a in A]    # a is the scalar here.

使用map(...):

map(lambda a: L if a else False, A)

forステートメントの使用:

returnVector = A[:]    # returnVector is the intended output vector
for index, a in enumerate(A): if a is True: returnVector[index] = L
于 2013-03-08T07:49:51.217 に答える