字符串中的字符交换

2024-09-26 22:07:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将15个数字组成的数字字符串的中间字符与字符串的最后一个数字交换。你知道吗

所以我明白了:

def string(str):  
      return str[-1:] + str[1:-1] + str[:1]  

print(string('abcd'))  
print(string('12345')) 

结果:

dbca
52341

但是我怎样才能在初始输入字符串012345678912345中

其中7与字符串5中的最后一个字符交换?你知道吗


Tags: 字符串stringreturndef数字字符printabcd
3条回答

在这个非常具体的上下文中(总是长度为15的字符串的中间和最后一个字符),您的初始方法可以扩展到:

text[0:7]+text[-1]+text[8:-1]+text[7]

还要尽量避免变量名,如str,因为它们会隐藏相同名称的函数。你知道吗

您可以使用以下函数:

    In [178]: def swap_index_values(my_string):
     ...:     l = list(my_string)
     ...:     middleIndex = (len(l) - 1)/2 
     ...:     middle_val = l[middleIndex]
     ...:     l[middleIndex] = l[-1]
     ...:     l[-1] = middle_val
     ...:     return ''.join(l)
     ...: 

    In [179]: 

    In [179]: a
    Out[179]: '012345678912345'

    In [180]: swap_index_values(a)
    Out[180]: '012345658912347'

在上面,您可以看到中间值和最后一个值已经交换。你知道吗

考虑

def last_to_mid(s):
    if len(s) == 1:
        return s

    if len(s)%2 == 0:            
        raise ValueError('expected string of odd length')

    idx = len(s)//2
    return f'{s[:idx]}{s[-1]}{s[idx+1:-1]}{s[idx]}'

操作如下:

>>> last_to_mid('021')
'012'
>>> last_to_mid('0123x4567')
'01237456x'
>>> last_to_mid('1')
'1'

假设您有python3.6或更新版本的f-strings。你知道吗

相关问题 更多 >

    热门问题