繁体   English   中英

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

[英]Getting the last half of string written on backwards

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

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]

问题是:有没有更短的方法来做到这一点? 可以在一次操作而不是两次操作中完成吗?

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

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

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

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

使用方法:

a = '12345678'
b = '123456789'

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

print method(a)
print method(b)

>>> 
8765
9876

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM