目录
一、举例
例题:反转字符串,将字符串倒序结果字符串输出
输入:a=1223456789'
输出:987654321
二、几种实现方法
方法1:切片--简单好用
a = '123456789'
print(a[::-1]) # 利用字符串下标倒序输出
方法2:使用reversed()方法
此方法可读性好,但速度是慢的
print(''.join(reversed('123456789')))
方法3:使用while循环
import time
# 1、使用字符串进行循环获取
def reverse_string(str):
str1 = '' # 定义空字符串
index = len(str) # 字符串长度
# 在str字符穿长度内执行循环语句,实现倒序输出
while index:
index -= 1
str1 += str[index]
return str1
start_time = time.time() # 运行开始时间
a = '123456789'
result = reverse_string(a)
print(result)
end_time = time.time() # 运行结束时间
run_time = end_time - start_time
print("字符串循环实现代码运行时间是:",run_time)
import time
# 2、使用list循环获取,再转换成字符串类型
def reverse_string_list(str):
str_lis = [] # 定义空列表
index = len(str) # 字符串长度
# 在str字符穿长度内执行循环语句,实现倒序输出
while index:
index -= 1
str_lis.append(str[index]) # 将下标对应值输出到空列表str_lis中
return ''.join(str_lis)
start_time_lis = time.time()
a = '123456789'
result_lis = reverse_string_list(a)
print(result_lis)
end_time_lis = time.time()
run_time_lis = end_time_lis - start_time_lis
print("列表循环实现代码运行时间是:",run_time_lis)
方法4:使用for循环字符串拼接(慢)
import time
def reverse_string(str):
l = len(str)
x=""
for i in range(l-1,-1,-1):
x += str[i]
return x
start_time = time.time()
result = reverse_string('123456789')
print(result)
end_time = time.time()
run_time = end_time - start_time
print("代码运行时间是:",run_time)
方法5:使用递归(慢)
import time
def reverse_string(s):
if len(s) == 1: # 判断字符串长度是否只含有一位数字,若是直接返回,本身即为反转后的字符串
return s
str = s[-1] + reverse_string(s[:-1]) # 利用递归实现
return str
start_time = time.time()
a = '123456789'
result = reverse_string(a)
print(result)
end_time = time.time()
run_time = end_time - start_time
print("代码运行时间是:",run_time)
方法6:模拟出栈pop()
import time
def reverse_string(str):
l = list(str) # 模拟全部入栈
new_string = ""
while len(l)>0:
new_string += l.pop() # 模拟出栈
return new_string
start_time_lis = time.time()
a = '123456789'
result = reverse_string(a)
print(result)
end_time_lis = time.time()
run_time_lis = end_time_lis - start_time_lis
print("pop()实现代码运行时间是:",run_time_lis)
方法7:reduce()--不常用
此方法再python3中已被移入functools模块中,其作用实现相当于for,但对于代码运行性能有要求的话,要尽量减少使用此方法,在实际应用中不常用reduce(),所以在此就不详细举例说明了,有想要的可自行查找学习reduce与for性能对比。
三、总结
通过以上几种字符串反转输出实现方法,可得出对于运行速度以及复杂程度来说,方法一是最常用到的,也是最简便的实现方法。灵活运用下标索引是非常重要的。