Python 如何在空格位置将列表中的值插入到其他列表中?

Python 如何在空格位置将列表中的值插入到其他列表中?,python,Python,这是我的名单 i=["abc","def","ghi"] j=[" ","rfd"," "," ","qf"] 我希望我的输出是这样的 j=["abc","rfd","def","ghi","qf"] i、 当它在“j”中找到空格时,它应该用“i”中的一个元素替换空格? 如何在空格位置将列表中的值插入到其他列表中,这不是一个非常常见的问题: i=["abc","def","ghi"] j=[" ","rfd"," "," ","qf"] while " " in j and i:

这是我的名单

i=["abc","def","ghi"]
j=[" ","rfd"," "," ","qf"]
我希望我的输出是这样的

j=["abc","rfd","def","ghi","qf"]
i、 当它在“j”中找到空格时,它应该用“i”中的一个元素替换空格?
如何在空格位置将列表中的值插入到其他列表中,这不是一个非常常见的问题:

i=["abc","def","ghi"]
j=[" ","rfd"," "," ","qf"]


while " " in j and i:
    j[j.index(" ")] = i.pop(0)

print j
Output: ['abc', 'rfd', 'def', 'ghi', 'qf']
那么:

i=["abc","def","ghi"]
j=[" ","rfd"," "," ","qf"]

filler = iter(i)
print [el if el != ' ' else next(filler, ' ') for el in j]
# ['abc', 'rfd', 'def', 'ghi', 'qf']

如果出现异常,在
j
中有空格,但
i
中没有进一步的替换项,则取消默认参数(例如:
next(filler)
),这是一个简单易懂的解决方案:

>>> i = ['abc', 'def', 'ghi']
>>> j = [' ', 'rfd', ' ', ' ', 'qf']
>>> cnt = 0
>>> new = []
>>> for item in j:
...     if item == ' ':
...             new.append(i[cnt])
...             cnt += 1
...     else:
...             new.append(item)
... 
>>> print new
['abc', 'rfd', 'abc', 'abc', 'qf']
这将遍历
j
列表,如果元素不是“空”(所有空格),则生成该元素。如果它是“空的”,它将产生
i
列表的下一个元素

感谢@JonClements和@DSM提供的建议。

试试这个:

[x for x in (i + j) if len(x.strip()) > 0]

使用列表理解的简单解决方案。

这些不是空字符串。他们是太空人,我的坏…,那是什么,太空。。!泰..你忘了递增
cnt
@Kos Oops。。。所以我这样做了,它不会用
i
中的元素填充
j
上的空格。。。它实际上是串联列表上的一个过滤器…
下一步(它)
在Python 2.6中很好,应该优先使用它还有
.isspace()
,我认为它看起来更干净一些。@DSM True,更改了它。
[x for x in (i + j) if len(x.strip()) > 0]