标题可能看起来有点奇怪,但这是我需要在 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 定义为标量并用一两行代码完成它?
谢谢。
您可以使用列表推导:
[L if i else False for i in A ]
这是一个非常简单的方法:
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]
map(lambda x: L if x else False, A)
根据定义,L
并且A
不是标量。您可以使用一个标量,它遍历 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