Python中的字符串分割的良好实践

2024-10-01 04:46:28 发布

您现在位置:Python中文网/ 问答频道 /正文

有时我会写这样的代码:

a,temp,b = s.partition('-')

我只需要选择第一个和第三个元素。temp永远不会被使用。有更好的办法吗?

换句话说,有没有更好的方法来选择不同的元素来创建一个新列表?

例如,我想使用旧列表中的元素0,1,3,7创建一个新列表。这个 代码如下:

newlist = [oldlist[0],oldlist[1],oldlist[3],oldlist[7]]

很难看,不是吗?


Tags: 方法代码元素列表temppartition我会办法
3条回答

可以使用Python的扩展切片功能定期访问列表:

>>> a = range(10)
>>> # Pick every other element in a starting from a[1]
>>> b = a[1::2]
>>> print b
>>> [1, 3, 5, 7, 9]

负索引工作正常:

>>> c = a[-1::-2]
>>> print c
>>> [9, 7, 5, 3, 1]

为了你的案子

>>> a, b = s.partition('-')[::2]

首先还有一种选择:

a, b = s.partition('-')[::2]

对于后者,因为没有明确的间隔,所以没有办法做得太干净。但这可能适合你的需要:

newlist = [oldlist[k] for k in (0, 1, 3, 7)]

小心使用

a, _, b = s.partition('-')

有时_用于国际化(gettext),因此您不想意外地覆盖它。

通常我是为了partition而不是创建一个不需要的变量

a, b = s.partition('-')[::2]

在一般情况下

from operator import itemgetter
ig0137 = itemgetter(0, 1, 3, 7)
newlist = ig0137(oldlist)

如果在循环中使用itemgetter,则它比列表理解更有效

相关问题 更多 >