使用字符串列表中的每个字符串的前两个字母创建一个列表

时间:2014-08-27 19:17:51

标签: python

使用字符串列表中每个字符串的前两个字母创建列表的最佳方法是什么。比如说我有

L = ['apple','banana','pear']

我希望结果是

['ap','ba','pe']

4 个答案:

答案 0 :(得分:1)

没问题:

L = ['apple','banana','pear']
[s[:2] for s in L]

答案 1 :(得分:1)

L = ['apple','banana','pear']
[ s[:2] for s in L ] 

如果L项为空,则可以添加

[ s[:2] for s in L if s]

答案 2 :(得分:1)

您可以使用列表推导

 >>> L = ['apple', 'banana', 'pear']
 >>> newL = [item[:2] for item in L]
 >>> print newL
 ['ap', 'ba', 'pe']

答案 3 :(得分:0)

虽然所有其他答案都应该是首选,但这里只是一个替代解决方案,希望对您来说很有意思。

您可map使用operator.getitem()功能并且slice个对象通过的列表:

>>> import operator
>>> L = ['apple','banana','pear']
>>> map(operator.getitem, L, (slice(0, 2), ) * len(L))
['ap', 'ba', 'pe']

或者,您可以使用operator.methodcaller()并调用__getitem__()魔法:

>>> import operator
>>> f = operator.methodcaller('__getitem__', slice(0, 2))
>>> map(f, L)
['ap', 'ba', 'pe']

请注意,这两种解决方案都不适用于实际的实际用途,因为它们至少比基于列表推导的方法更慢且可读性更低。