python中string.partition的良好实践

Max*_*Max 1 python string variable-assignment

有时我写这样的代码:

a,temp,b = s.partition('-')
Run Code Online (Sandbox Code Playgroud)

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

换句话说,有没有更好的方法来选择不同的元素来制作新的列表?

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

newlist = [oldlist[0],oldlist[1],oldlist[3],oldlist[7]]
Run Code Online (Sandbox Code Playgroud)

这很难看,不是吗?

Joh*_*ooy 6

小心使用

a, _, b = s.partition('-')
Run Code Online (Sandbox Code Playgroud)

有时_用于国际化(gettext),所以你不想意外地覆盖它.

通常我会这样做,partition而不是创建一个我不需要的变量

a, b = s.partition('-')[::2]
Run Code Online (Sandbox Code Playgroud)

这在一般情况下

from operator import itemgetter
ig0137 = itemgetter(0, 1, 3, 7)
newlist = ig0137(oldlist)
Run Code Online (Sandbox Code Playgroud)

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


Wol*_*lph 5

对于第一个,还有这个替代方案:

a, b = s.partition('-')[::2]
Run Code Online (Sandbox Code Playgroud)

对于后者,由于没有明确的间隔,所以没有办法做得太干净.但这可能适合您的需求:

newlist = [oldlist[k] for k in (0, 1, 3, 7)]
Run Code Online (Sandbox Code Playgroud)