2013-03-08 68 views
2

標標題似乎有點不可思議,但這裏是我需要在Python做:如何定義列表/數組在Python

假設我有一個列表(L)和一個布爾陣列( A)

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

我需要創建將有L,其中A是真與假,其中A是假的名單,即

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

我考慮做這樣的事情
L and A
但它似乎不工作,因爲L不是我想要的標量。

有什麼辦法可以將L定義爲標量,並用一行代碼來完成它?

謝謝。

+1

代碼? – uba 2013-03-08 05:51:43

+0

Python,遺憾的是錯過了。 – jazzblue 2013-03-08 06:03:51

回答

4

你可以使用列表理解:

[L if i else False for i in A ] 
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] 
1
map(lambda x: L if x else False, A) 
0

顧客服務:LA不是標量。您可以使用一個標量,它遍歷A並返回一個包含L的向量,其中標量爲True幷包含False,其中它是False

使用列表理解:

[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