我有一个类似的列表
my_list = ['#005', '#003', '#002']
我想要一个包含 ['005','003','002']
的列表。我正在寻找类似 map([:1], mylist)
的内容。存在吗?
最佳答案
您可以使用列表理解来删除第一个字符,如下所示
>>> 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 传递给 map ,它获取每个项目并返回剥离的字符串。
或者,您可以惯用地使用 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:]
表单执行相同的工作)。
关于python - 如何对列表中的多个字符串进行切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778321/