如何在列表中切出几个字符串?

时间:2015-02-28 05:07:43

标签: python string list python-2.7 python-3.x

我有一个像

这样的清单
my_list = ['#005', '#003', '#002']

我想要一个['005','003','002']的列表。我正在寻找的是类似map([:1], mylist)的东西。它存在吗?

2 个答案:

答案 0 :(得分:2)

您可以使用列表理解来删除像这样的第一个字符

>>> my_list = ['#005', '#003', '#002']
>>> [item[1:] for item in my_list]
['005', '003', '002']

如果你想使用map函数,你需要向它传递一个函数,它会执行相同的剥离,就像这样

>>> map(lambda item: item[1:], my_list)
['005', '003', '002']

这里我们将lambda expression传递给地图,该地图获取每个项目并返回剥离的字符串。

或者,您可以惯用str.lstrip函数,例如

>>> [item.lstrip('#') for item in my_list]
['005', '003', '002']

相同的lstrip函数可以与map一样使用

>>> map(lambda item: item.lstrip('#'), my_list)
['005', '003', '002']

注意:如果您使用的是Python 3.x,则map会返回一个可迭代的map对象。您需要迭代它并将其转换为列表,如此

>>> my_list = ['#005', '#003', '#002']
>>> map(lambda item: item[1:], my_list)
<map object at 0x7fa6b301ef98>
>>> list(map(lambda item: item[1:], my_list))
['005', '003', '002']

作为scott_fakename mentioned in the comments,您可以对此问题进行功能性处理,例如

>>> from operator import itemgetter
>>> list(map(itemgetter(slice(1, None)), my_list))
['005', '003', '002']

这使用operator.itemgetterslice函数(与[1:]表单执行相同的工作)。

答案 1 :(得分:1)

In [120]: my_list = ['#005', '#003', '#002']

In [121]: new_list = [ele[1:] for ele in my_list]

In [122]: new_list
Out[122]: ['005', '003', '002']