2009-09-05 161 views
0

我有一個列表filter = ['a','b','c']。我需要從列表中刪除以下字符串 「item -a item -b item -c」。哪種做法最有效?通常情況下,列表過濾器包含100到200個項目,每個項目的長度都是100-150。這不會導致溢出嗎?什麼是支持的字符串的最大長度?字符串格式

+7

不要使用'filter'作爲變量名稱。 「filter」是一個Python函數。 – 2009-09-05 07:00:16

+0

很多東西都是Python內置的,所以現在很難不踩他們。它通常隻影響它所在的​​代碼塊,所以不要試圖記住每個內置函數名稱,而只是避免你知道和使用的名稱是合理的無害的,如果你錯過了一個並且需要使用它,就可以稍後重命名變量。 – 2009-09-05 08:17:27

+1

真的沒有那麼多的內置函數。剛剛超過80個。 – 2009-09-05 08:50:43

回答

4

一個更清潔的方式來做到這一點:

filter = ['a', 'b', 'c'] 
" ".join(["item -%s" % val for val in filter]) 

這工作得很好,大型排列,例如。 filter = ['a'*1000] * 1000

+0

偉大的解決方案。謝謝 – Prabhu 2009-09-05 08:15:19

1

您可以使用join(我相信join是在Python 3.0一樣):

>>> l = ['a','b','c'] 
>>> print ' item -'.join([''] + l) 
>>> ' item -a item -b item -c' 

>>> print ' item -'.join([''] + l).lstrip(' ') # eat the leading space 
>>> 'item -a item -b item -c' 
+0

會不會''item - '。join(l)'同樣好用? – 2009-09-05 07:23:10

+0

您可能還想修剪掉結果中多餘的空格。 – 2009-09-05 07:23:49

+1

@Dominic Rodger,是的,我們可以修剪領先空間。 '加入(l)'不會給出Prabhu想要的結果。該字符串將開始「一個項目...」而不是「項目-a ...」 – 2009-09-05 07:36:37