替换列表中的元素并对列表进行排序

时间:2019-02-02 11:08:20

标签: python list

我有2个列表

a=[2,4,6]
b=[1,3,5,-1,-1,-1]

我必须用列表-1中的元素替换b中的a,然后将b打印为排序列表

预期

output= [1,2,3,4,5,6]

5 个答案:

答案 0 :(得分:4)

您可以使用列表理解并在其上调用sorted()

a = [2,4,6]
b = [1,3,5,-1,-1,-1]

a = iter(a)
output = sorted([next(a) if x == -1 else x for x in b])

print(output)
# [1, 2, 3, 4, 5, 6]

答案 1 :(得分:0)

尝试一下:

a=[2,4,6]
b=[1,3,5,-1,-1,-1]
a.reverse()

for i,v in enumerate(b):
    if v == -1:
        b[i] = a.pop()   

然后,您可以根据需要对b进行排序。

答案 2 :(得分:0)

    for i in a:
      b[b.index(-1)]=i
    b.sort()

以上是您所需要的全部

答案 3 :(得分:0)

您可以使用list.pop()方法从b获取下一项,同时也将其删除,然后将整个列表理解内容包装在sorted()中:

a = [2,4,6]
b = [1,3,5,-1,-1,-1]


a = sorted([b.pop(0) if i == -1 else i
            for i in a]

但是,如果要保留列表b,最好使用next()上的iter(a),如另一个答案中所述。

答案 4 :(得分:0)

如果 public function update($id, Request $request) { $et=Model::find($id); //update some parent table field's (if you want) $et['type']=$request['type']; $et['sum'] =preg_replace('/[^0-9]/s', '', $request['sum']); //for remove thousand separtor $et->save(); $et_det=$et->et_dets() ->pluck('id','id'); // one-to-many relation for ($i=0;$i<count($request['det_id']);$i++) {//some matching condition $createdOrUpdated = Model_dets::updateOrCreate( [ 'parent_id'=>$id, 'total'=>$request['total'][$i] ], [ 'columnA' => $request['columnA'][$i], 'ColumnB' => $request['ColumnB'][$i]) ]); if (!empty($et_det[$createdOrUpdated->id])) { unset($et_det[$createdOrUpdated->id]); } } if (count($et_det)) { Model_det::whereIn('id', $et_det)->delete(); } return Redirect::to('index')->with('alert-success','Update successfully'); } 大于-1),此详细选项也适用:

len(a