我有两个列表:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class IndexController extends AbstractController
{
/**
* @Route(methods={"GET"}, path="/")
*/
public function index(): Response
{
return new Response();
}
}
我想用列表“ b”的元素替换列表“ a”中的“ 1”,顺序很重要。我想要这样的东西
a = [1, 1, 0, 1, 0, 0, 1]
b = [120, 131, 152, 143]
答案 0 :(得分:4)
这是一种通过使用b
将iter()
转换为可迭代对象的方法。
例如:
a = [1, 1, 0, 1, 0, 0, 1]
b = iter([120, 131, 152, 143])
print([next(b) if val == 1 else val for val in a])
输出:
[120, 131, 0, 152, 0, 0, 143]
答案 1 :(得分:2)
一种更“传统”的方法,带有一个简单的循环:
a = [1, 1, 0, 1, 0, 0, 1]
b = [120, 131, 152, 143]
ans = []
i, j = 0, 0
while i < len(a):
if a[i] == 1:
ans.append(b[j])
j += 1
else:
ans.append(0)
i += 1
ans
=> [120, 131, 0, 152, 0, 0, 143]