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]