這些都是我的名單如何從列表中插入值到其他位置的空間?
i=["abc","def","ghi"]
j=[" ","rfd"," "," ","qf"]
,我想我的輸出是這樣的,
j=["abc","rfd","def","ghi","qf"]
即,每當發現裏面的「J」的空間,它應該由一個元素,從「我更換空間「? 如何從列表中的空間
這些都是我的名單如何從列表中插入值到其他位置的空間?
i=["abc","def","ghi"]
j=[" ","rfd"," "," ","qf"]
,我想我的輸出是這樣的,
j=["abc","rfd","def","ghi","qf"]
即,每當發現裏面的「J」的空間,它應該由一個元素,從「我更換空間「? 如何從列表中的空間
一個很好的和簡單的解決方案,以瞭解:
>>> 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']
嗯位置不插入值到其他一個非常普遍的問題:
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']
脫下默認參數(例如: next(filler)
)如果在j
中存在空格但是沒有可從i
獲得進一步替換的情況下應該發生異常。
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]
簡單的解決方案:
試試這個。
這不會用'i'中的元素填充'j'上的空格......它實際上是連接列表上的過濾器...... –
那些不是空字符串。他們是空間 – TerryA
你,我的壞...,那是什麼,空間..! ty .. – no1