[英]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.