我有一个称为x(大小458)的真或假值列表
x = [False, True, False, True, True, False, False ...]
还有一个索引列表,称为y。 (大小1754)
y = [0, 1, 2, 2, 3, 3, 4, ...]
我想做的是创建一个与列表x对应的True或False值的新列表。例如,根据x和y中的值成功执行我的代码将是创建一个名为z的新列表,大小为1754,看起来像这样
z = [False, True, False, False, True, True, True, ...]
到目前为止,我已经使用以下代码尝试了此操作
z = []
for i in y:
for index, value in enumerate(x):
if i == index:
z.append(value)
但是,z作为空白列表返回。任何想法都将不胜感激。
答案 0 :(得分:2)
由于y包含x的索引,因此对y的理解列表以及直接访问x的索引可以解决O(len(y))
中的问题。因此,我认为这已经足够。:
z = [x[i] for i in y]
示例:
x = [False, True, False, True, True]
y = [0, 1, 2, 2, 3, 3, 4]
z = [x[i] for i in y]
输出:
[False, True, False, False, True, True, True]