我想知道是否有一個內置的功能,類同str.join()
,提供了一個連接,其中可重複的參數可被插入作爲格式字符串:「項:%S n」個。加入()
"ITEM : %s \n".join(["apple", "pear", "rabbit"])
輸出:
ITEM : apple
ITEM : pear
ITEM : rabbit
我知道如何寫我自己的效用函數,只是不知道是否有一個內置的被我忽略的功能。
我想知道是否有一個內置的功能,類同str.join()
,提供了一個連接,其中可重複的參數可被插入作爲格式字符串:「項:%S n」個。加入()
"ITEM : %s \n".join(["apple", "pear", "rabbit"])
輸出:
ITEM : apple
ITEM : pear
ITEM : rabbit
我知道如何寫我自己的效用函數,只是不知道是否有一個內置的被我忽略的功能。
您可以隨時使用一個for循環與str.format()
,但你真的不使用它,你可能會想到:
>>> for item in ["apple", "pear", "rabbit"]:
... print 'ITEM : {}'.format(item)
...
ITEM : apple
ITEM : pear
ITEM : rabbit
或者,將其寫入到一個字符串:
print '\n'.join('ITEM : {}'.format(item) for item in ["apple", "pear", "rabbit"])
我認爲這是最接近的形式你什麼建議,但似乎非常方便:)
>>>print "ITEM : " + "\nITEM : ".join(["apple", "pear", "rabbit"])
ITEM : apple
ITEM : pear
ITEM : rabbit
>>>
t將其不ypically你只會迭代。
如果有人想堅持這個空列表檢查是必要的,因爲在評論中指出:
result = items != [] and "ITEM : " + "\nITEM : ".join(items) or ""
您可以使用列表理解
s = "\n".join("ITEM : %s" % f for f in ["apple", "pear", "rabbit"])
我意識到這一點,我正在尋找一個內置函數。 –
@Emil:並非所有東西都應該是內置函數,就像在這種情況下,完全沒有必要將它設置爲內置或標準庫,因爲您可以輕鬆製作一個。無論如何,你總是可以自己定義它:'tpljoin = lambda pat,lst:「」.join(pat%f for f in lst)'。像這樣調用它:'tpljoin(「ITEM:%s \ n」,[...])' –
@Emil:這是內置的*功能*。爲什麼語法將會需要一個函數? –
據我所知這樣的功能不存在。事實上,我沒有看到標準庫中應該有這樣一個函數的原因,因爲它是一種非常複雜的方式,可以用一種更簡單的方式來實現循環的功能。請注意,你總是可以做一些事情,比如'template ='ITEM%s \ n'* len(elements); text = template%elements'。 (其中'元素'應該是'元組')。 – Bakuriu
@Bakuriu一個連接也可以很容易地用循環完成。 –
是的,但它更頻繁地使用。而且由於字符串重新分配,naive循環的實現是'O(n^2)',而'join'可以防止這種情況並獲得'O(n)'速度。內置的函數應該提供無處不在的功能(例如,參見'enumerate'),或者一些經常使用的功能,並且不能在2-3行中實現。在你的情況下,表達式:'template * len(elements)%elements'實現了你想要的功能並且對我來說似乎很簡單。 – Bakuriu