2024-10-01 04:46:28 发布
网友
有时我会写这样的代码:
a,temp,b = s.partition('-')
我只需要选择第一个和第三个元素。temp永远不会被使用。有更好的办法吗?
temp
换句话说,有没有更好的方法来选择不同的元素来创建一个新列表?
例如,我想使用旧列表中的元素0,1,3,7创建一个新列表。这个 代码如下:
0,1,3,7
newlist = [oldlist[0],oldlist[1],oldlist[3],oldlist[7]]
很难看,不是吗?
可以使用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而不是创建一个不需要的变量
partition
在一般情况下
from operator import itemgetter ig0137 = itemgetter(0, 1, 3, 7) newlist = ig0137(oldlist)
如果在循环中使用itemgetter,则它比列表理解更有效
可以使用Python的扩展切片功能定期访问列表:
负索引工作正常:
为了你的案子
首先还有一种选择:
对于后者,因为没有明确的间隔,所以没有办法做得太干净。但这可能适合你的需要:
小心使用
有时
_
用于国际化(gettext),因此您不想意外地覆盖它。通常我是为了
partition
而不是创建一个不需要的变量在一般情况下
如果在循环中使用itemgetter,则它比列表理解更有效
相关问题 更多 >
编程相关推荐