Python使用不同列表中的值替换列表中的空字符串

Python使用不同列表中的值替换列表中的空字符串,python,Python,我正在寻找一种巧妙/优雅的方法,将一个列表中的“替换为另一个列表中的值,即: empty_list = [" ", " ", " "] other_list = ["a", "b"] result_list = ["a", "b", " "] 另外,我不是在为循环解决方案寻找 new_list = [ a if b == ' ' else b for a,b in zip( other_list, empty_list)] new_list += empty_list[len(other_li

我正在寻找一种巧妙/优雅的方法,将一个列表中的
替换为另一个列表中的值,即:

empty_list = [" ", " ", " "]
other_list = ["a", "b"]
result_list = ["a", "b", " "]
另外,我不是在为循环解决方案寻找

new_list = [ a if b == ' ' else b for a,b in zip( other_list, empty_list)]
new_list += empty_list[len(other_list):]
输出

['a', 'b', ' ']

如果空列表只包含
空格,只需对第一个列表进行切片

empty_list = [" ", " ", " "]
other_list = ["a", "b"]
print([i for i in other_list if len(i)>0]+empty_list[len(other_list):])
输出:

['a', 'b', ' ']

您是否保证
其他列表
总是小于
空列表
?对于
空列表=[“”、“foo”、“”]
,结果会是什么<代码>[“a”,“foo”,“b”]
[“a”,“foo”,““”]
?为什么不为
循环设置
?对于一个简单的问题,你会得到一些非常奇怪的解决办法。@scharette不,你也应该处理好这个问题=)@scharette,空列表的大小总是大于或等于为什么“b”,“a”,当OP要求“a”,“b”时?我改了:)
x如果x!='else other_list.如果len(other_list)else x
Yuk,则弹出(0)。把
other_list
做成
iter
,如果x!='',那么
x怎么样else next(other iter,x)
?这假设
空列表
实际上只是一个
'
列表。如果是这样的话,那么这将起作用,而且确实是最好的解决方案,但这是一个很大的如果。(不是我的反对票,顺便说一句)这并不能真正解决上述问题,只是为这些输入提供了正确的答案。@tobias_k empty_list(顾名思义,未经OP澄清)应该只包含空格。我只是跟着帖子不使用for循环。没有比这更好的了。@PatrickHaugh我不明白它解决不了什么问题?你能解释一下吗?
['a', 'b', ' ']