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]