文章目录

  • 1.反转列表法
  • 2.循环反向迭代法
  • 3.反向循环迭代法
  • 4.倒序切片法
  • 5.遍历索引法
  • 6.列表弹出法
  • 7.列表解析式法
  • 8.累积相加法
  • 9.匿名函数法
  • 10.列表倒序法
  • 11.双向队列排序法
  • 12.双向队列反转法
  • 13.一维数组索引法
  • 14.函数递归法
  • 15.对称交换法




1.反转列表法

a = 'abcde'
b = list(a)
b.reverse()
b = ''.join(b)
print(b)

Python中,列表可以进行反转,我们只要把字符串转换成列表,使用reverse()方法,进行反转,然后再使用字符串的join()方法遍历列表,合并成一个字符串。

2.循环反向迭代法

a = 'abcdef'
b = ''
for i in a:
	b = i + b
print(b)

字符串属于序列的一种,我们可以使用for循环遍历字符串,然后,不断反向赋值给变量b,最后输出变量b,就完成了字符串反转

3.反向循环迭代法

a = 'abcdef'
b = ''
for i in a[::-1]:
	b += i
print(b)

字符串本身就可以进行切片,当然也可以设置步长为-1,进行倒序。然后,再进行遍历,迭代变量b,也可以达到反转效果,逻辑和方法二相同。

4.倒序切片法

a = 'abcdef'
b = a[::-1]
print(b)

方法二和方法三的终极版本,直接反转,一步到位。

5.遍历索引法

a = 'abcdef'
b = ''
for i in range(1,len(a)+1):
	b = b + a[-1]
print(b)

字符串作为序列,可以进行索引,我们先遍历索引数字,然后倒序提取字母,然后合并成字符串

6.列表弹出法

a = 'abcdef'
a = list(a)
b = ''
while len(a) > 0:
    b += a.pop()
print(b)

列表有一种弹出的方法pop(),弹出其中某个元素,默认为最后一个元素。我们设置变量b,然后不断弹出字符串的最后一个字符,加入变量b中,最终使得字符串反转。

7.列表解析式法

a = 'abcdef'
b = ''.join(i for i in a[::-1])
print(b)

方法三的简便写法,使用列表解析式,简化代码书写。最后同样通过join()方法,反转合并字符串

8.累积相加法

from functools import reduce

a = 'abcdef'

def f(x, y):
    return y+x

b = reduce(f, a)
print(b)

使用python中的reduce()函数。先创建一个字符串倒序相加函数和字符串,一起传入reduce函数中,运行,就可以进行字符串倒序累积相加,最后反转字符串

9.匿名函数法

from functools import reduce
a = 'abcdef'
b = reduce(lambda x, y: y+x, a)
print(b)

方法九的进阶版,使用lambda匿名函数创建字符串倒序相加函数,然后进行累积,得到字符串反转结果

10.列表倒序法

a = 'abcdef'
a = list(a)
a.sort(reverse=True)
b = ''.join(a)
print(b)

用列表的sort(reverse=True)方法,倒序排列,不过,这一方法有个弊端,它并不是按字符串的顺序进行升序或降序排列,而是按英语26个字母进行排序,所以,如果字符串不是按从小到大排列,那么运行后,排序会是错误的

11.双向队列排序法

import collections

a = 'abcdef'
b = collections.deque()
for i in a:
    b.appendleft(i)
b = ''.join(b)
print(b)

使用双向队列进行操作。解释下双向队列,这是一个数据结构,但可以方便的向序列的两边进行添加,删除元素。我们遍历字符串,向左添加入双向队列中,最后使用join()方法合并,使字符串反转

12.双向队列反转法

import collections

a = 'abcdef'
b = collections.deque()
b.extend(list(a))
b.reverse()
b = ''.join(b)
print(b)

同样使用双向队列,把字符串转换成列表添加入队列中,然后整个进行反转,最后合并导出

13.一维数组索引法

import pandas as pd

a = 'abcdef'
b = pd.Series(list(a))
b = ''.join(b[::-1])
print(b)

使用pandas的一维数组结构,对其倒序遍历,反转字符串

14.函数递归法

import pandas as pd

a = 'abcdef'

def f(a):
    if len(a) <= 1:
        return a
    return a[-1]+f(a[:-1])

print(f(a))

使用递归的思想,建立函数,倒序添加字符串,直到字符串长度小于等于1以后停止

15.对称交换法

a = 'abcdef'

def f(a):
    a = list(a)
    if len(a) <= 1:
        return a
    i = 0
    length = len(a)
    while i < length/2:
        a[i], a[length-1-i] = a[length-1-i], a[i]
        i += 1
    return ''.join(a)

print(f(a))

遍历字符串前一半的元素,然后和后一半对称的那个位置的元素进行交换,以达到字符串反转