将字符串的后半部分写在后面

时间:2013-05-26 07:51:07

标签: python python-3.x

我有一个字符串或几个字符串。 例如:

a = '12345678'
b = '123456789'

我正在使用Python 3.2。我试图让后面写的字符串的后半部分。如果字符串具有奇数个字符,则丢弃中间字符。所以,我想要实现的目标是:

a_out = '8765'
b_out = '9876'

我这样做的方法如下:

a_back = a[::-1]
a_out = a_back[0:len(a_back)//2]

问题是:有更短的方法吗?它可以在一次操作中而不是两次操作中完成吗?

3 个答案:

答案 0 :(得分:6)

您可以同时计算索引并反转字符串:

>>> a[:-(len(a)+1)//2:-1]
'8765'
>>> b[:-(len(b)+1)//2:-1]
'9876'

答案 1 :(得分:1)

你可以把它变成一个单行:

a_out = a[::-1][0:len(a)//2]

如果您可以在字符串中进行花哨的索引,就像我们在numpy数组中那样做,那就太好了,那么另一个解决方案就是:

a_out = a[ range(len(a)-1, len(a)//2-1, -1) ] # NOT POSSIBLE

@jamylak建议使用'itemgetter'以高效的方式完成花式索引的等价物:

from operator import itemgetter
items = [0,3,2,1,0,0,2,3,]
a_out = ''.join( itemgetter( *items )(a) )
#14321134

答案 2 :(得分:1)

使用方法:

a = '12345678'
b = '123456789'

def method(x):  
    return x[:-(len(x)+1)//2:-1]

print method(a)
print method(b)

>>> 
8765
9876