文章目录
- 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))
遍历字符串前一半的元素,然后和后一半对称的那个位置的元素进行交换,以达到字符串反转