2014-11-05 24 views
0

說我有一個問題,我必須掃描列表來查找與foo開頭的單詞的所有實例,但我不知道有多少可能和輸出必須是在格式<out1, out2, etc..>偏離一個問題與連接字符串

目前我一直在做:

toReturn = '<' 
toReturn += [word in word for mylonglist if word.startswith('foo') + ', '] 
toReturn = toReturn[:-2] + '>' 
print toReturn 

是有一個更清潔的方式做到這一點?謝謝!

+0

您現有的代碼實際上不起作用。正如所寫的,你正在向一個字符串添加一個列表;你必須有'''.join(...)'或其他東西。此外,你要添加的'「」'爲BOOL,而不是一個字符串,即使是合法的,你做的是,在'if'條款,可以在不影響值列入清單。 – abarnert 2014-11-05 20:50:13

回答

4

您可以使用join指定一個分隔符的序列中元素之間注入並返回string。在你可以使用format'<''>'添加到末端。

>>> myList = ['foobar', 'footest', 'not', 'test', 'foothing'] 
>>> '<{}>'.format(', '.join(i for i in myList if i.startswith('foo'))) 
'<foobar, footest, foothing>' 
+0

打我壽可能是值得注意的是,如果它是Python 2.7版,我相信,你必須使用{0},而不是{}。 – user2097159 2014-11-05 20:46:39

+1

@ user2097159:不,只有2.6(和3.0); 2.7(和3.1+)有'{}'。 – abarnert 2014-11-05 20:48:05