2013-03-08 71 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