Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换列表中的元素并对列表进行排序_Python_List - Fatal编程技术网

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

Python 替换列表中的元素并对列表进行排序,python,list,Python,List,我有两张单子 a=[2,4,6] b=[1,3,5,-1,-1,-1] 我必须将b中的-1替换为列表a中的元素,然后将b打印为排序列表 期望 output= [1,2,3,4,5,6] 试试这个: 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进行排序 您可以通过列表理解并在其上调用sorted(

我有两张单子

a=[2,4,6]
b=[1,3,5,-1,-1,-1]
我必须将
b
中的
-1
替换为列表
a
中的元素,然后将
b
打印为排序列表

期望

output= [1,2,3,4,5,6]
试试这个:

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
进行排序

您可以通过列表理解并在其上调用
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]

以上是您的需求所需的全部内容

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


然而,如果您想保留列表
b
,最好使用
iter(a)
上的
next()

如果
-1
大于
len(a
),此详细选项也有效:

a=[2,4,6]
b=[1,3,5,-1,-1,-1]
def更换(可更换,更换):
i=0
对于iterable中的e:
如果e==-1且i[-1,1,2,3,4,5,6]

如果您对列表的末尾进行排序,为什么还要担心替换
-1
s?完全删除它们是否有效?此问题缺少上下文或其他细节:请通过提供额外上下文来改进问题,其中最好包括您对问题的想法以及您为解决问题所做的任何尝试。这些信息有助于其他人识别您遇到的困难,并帮助他们写出适合您经验水平的答案。你还需要准确地说明你的困难是什么,你期望什么,你得到了什么,以及任何回溯。你可以保持
b.sort()
外部循环,所以它不会在每次迭代中排序。我补充道。这是电话里的片段。这就是我想要做的最好的答案,+1,但这会产生副作用,将
a
从列表更改为耗尽的迭代器。也许你应该为迭代器使用另一个名称?@RoryDaulton,我不确定OP是否计划进一步使用
a
。如果是的话,当然需要另外命名一个迭代器。谢谢,这很好用。我学会了一个新功能:下一步,再次感谢
    for i in a:
      b[b.index(-1)]=i
    b.sort()
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]
a=[2,4,6]
b=[1,3,5,-1,-1,-1,-1]

def replace(iterable, replacements):
  i = 0
  for e in iterable:
    if e == -1 and i < len(replacements):
      yield replacements[i]
      i += 1
    else:
      yield e

res = sorted(replace(b, a))

print(res) #=> [-1, 1, 2, 3, 4, 5, 6]