如何用其他元素替换列表的元素

时间:2019-12-04 09:38:33

标签: python list replace

我有两个列表:

<?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]

2 个答案:

答案 0 :(得分:4)

这是一种通过使用biter()转换为可迭代对象的方法。

例如:

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]