我有一个像
这样的清单my_list = ['#005', '#003', '#002']
我想要一个['005','003','002']
的列表。我正在寻找的是类似map([:1], mylist)
的东西。它存在吗?
答案 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.itemgetter
和slice
函数(与[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']