2013-08-29 40 views
0

這些都是我的名單如何從列表中插入值到其他位置的空間?

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

,我想我的輸出是這樣的,

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

即,每當發現裏面的「J」的空間,它應該由一個元素,從「我更換空間「? 如何從列表中的空間

+0

那些不是空字符串。他們是空間 – TerryA

+0

你,我的壞...,那是什麼,空間..! ty .. – no1

回答

0

一個很好的和簡單的解決方案,以瞭解:

>>> 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'] 
+1

你忘了增加'cnt' – Kos

+0

@Kos糟糕...所以我做了 – TerryA

0

嗯位置不插入值到其他一個非常普遍的問題:

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'] 
3

如何:

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'] 

脫下默認參數(例如: next(filler))如果在j中存在空格但是沒有可從i獲得進一步替換的情況下應該發生異常。

4
it= iter(i) 
[next(it) if item.isspace() else item for item in j] 

這將通過j列表循環和產生元素,如果它不是「空」(所有空格)。如果它是「空的」,它將產生i列表的下一個元素。

感謝@JonClements和@DSM的建議。使用列表理解

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

簡單的解決方案:

+0

'next(it)'從Python 2.6開始是好的,應該是首選的 –

+0

@JonClements你是對的。 –

+0

還有'.isspace()',我認爲它看起來更乾淨。 – DSM

0

試試這個。

+1

這不會用'i'中的元素填充'j'上的空格......它實際上是連接列表上的過濾器...... –

相關問題