python - 如何对列表中的多个字符串进行切片?

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

我有一个类似的列表

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.itemgetterslice 函数(与 [1:] 表单执行相同的工作)。

关于python - 如何对列表中的多个字符串进行切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778321/

相关文章:

python - pandas - 组合行字符串

python - PySchools - 主题 1 问题 7

arrays - 使用 IFS 排列的 Bash 字符串

c# - 如何传递参数来声明泛型类型列表?

Python 3.4 - 列表元素可以进行 str() 而不是 int() 转换

python - 外语的词云或可视化

python - 阅读无限流-tail

python - 将排列应用于列表的就地方法? (与按键排序相反)

python - (=string) 的正则表达式

python - 如何根据特定标准对列表进行排序