手写Python中列表和字符串的反转
要求:
- 原列表:[13, 30, 42, 85, 9, 45]
- 反转后的列表:[45, 9, 85, 42, 30, 13]
- 原字符串:hello
- 反转后的字符串:olleh
Python现成的反转功能:
在Python中有专门进行列表反转的函数–reverse()
l = [13, 30, 42, 85, 9, 45]
l.reverse() # [45, 9, 85, 42, 30, 13]
还可以使用切片操作进行列表反转
l = [13, 30, 42, 85, 9, 45]
print(l[::-1]) # [45, 9, 85, 42, 30, 13]
关于字符串的反转,并没有确切的函数对字符串进行反转,但是字符串也可以使用切片进行反转
s = "hello"
print(s[::-1]) # olleh
以上对列表和字符串的反转,都是现成的,使用起来很方便;但是我们也可以自己为列表和字符串手写一个反转函数(仅供参考)
手写列表反转函数:
思路1:
- 把列表中的值当成转成字典的value,字典的key为递增的数字
- 通过sorted()对字典key进行降序
- 依次取出进行降序后字典的value值,放到列表中
- 得到的就是反转后的列表
代码:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def reverse_list(n: list) -> list:d = dict(zip([i for i in range(len(n))], n))return [d[k] for k in sorted(d, reverse=True)]
使用:
l = [13, 30, 42, 85, 9, 45]
print(reverse_list(l)) # [45, 9, 85, 42, 30, 13]
思路2:
- 把列表通过 enumerate() 返回一个可以枚举的对象,该对象的next()方法将返回一个元组
- 把返回的元组放到一个新的列表中,通过sorted() 进行列表排序(根据列表中元组元素的第一个元素进行排序,使用降序)
- 遍历排序后的新列表,取每个元组元素的第二个元素,组成新列表
- 得到的新列表就是反转后的列表
代码:
def reverse_list(l: list) -> list:return [i[1] for i in sorted([v for v in enumerate(l)], reverse=True)]
使用:
l = [13, 30, 42, 85, 9, 45]
print(reverse_list(l)) # [45, 9, 85, 42, 30, 13]
思路3:
- 取列表最后一位追加到新列表后面
- 然后通过切片把最后一位之前的数据重新赋值给当前列表
- 依次重复操作,直至列表为空
- 得到的新列表就是反转后的
代码:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def reverse_list(n: list) -> list:a = []while len(n) > 0:a.append(n[-1])n = n[:-1]return a
使用:
l = [13, 30, 42, 85, 9, 45]
print(reverse_list(l)) # [45, 9, 85, 42, 30, 13]
思路4:
- 通过切片获取列表下标为 [-i - 1] 的元素
- 把切片得到的元素添加到新的列表中
- 依次重复操作,直至循环结束
- 得到的新列表就是反转后的
代码:
def reverse_list(n: list) -> list:return [n[-i - 1] for i in range(len(n))]
使用:
l = [13, 30, 42, 85, 9, 45]
print(reverse_list(l)) # [45, 9, 85, 42, 30, 13]
手写字符串反转函数:
思路1:
- 通过切片获取字符串最后一位
- 通过字符串拼接,把最后一位拼接到新的字符串中
- 然后通过切片把最后一位之前的数据重新赋值给当前字符串
- 依次重复操作,直至字符串为空
- 得到的新字符串就是反转后的
代码:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def reverse_str(s: str) -> str:new_s = ''while len(s) > 0:new_s += (s[-1])s = s[0:-1]return new_s
使用:
s = "hello"
print(reverse_str(s)) # olleh
思路2:
- 通过切片获取字符串下标为 [-i - 1] 的元素
- 通过字符串拼接,把切片得到的元素拼接到新的字符串中
- 依次重复操作,直至循环结束
- 得到的新字符串就是反转后的
代码:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def reverse_str(s: str) -> str:new_s = ''for i in range(len(s)):new_s += s[-i - 1]return new_s
使用:
s = "hello"
print(reverse_str(s)) # olleh
以上就是关于Python中列表和字符串的反转操作(这才是冰山一角,还有更多的实现方式),实际应用中还是使用列表自带的函数和切片操作进行反转即可,手写的仅供参考使用,写代码嘛,怎么简单易懂怎么来。
手写Python中列表和字符串的反转相关推荐
- Python中列表和字符串的反转
要求: 原列表:[13, 30, 42, 85, 9, 45] 反转后的列表:[45, 9, 85, 42, 30, 13] 原字符串:hello 反转后的字符串:olleh Python现成的反转功 ...
- python中列表字典和字符串的相互转化
python中列表字典和字符串的相互转化有两种方法: (1)使用str和eval的方法,一个简单的例子如下: data = {'name' : 'ACME','shares' : 100,'price ...
- python中列表中的字符串转换成数字
python中列表中的字符串转换成数字 调整实验时,发现某个嵌套列表的字典中需要把列表中的字符串改成数字,不能直接强转,需要以下代码实现 m_dict_G = {}for key in md_dict ...
- 四、Python第四课——Python中列表及其操作(增删改查)
目录 一.Python中的列表 1.列表的定义和赋值 2.列表的使用 二.列表的"增删改查" 1.列表中元素的增加 A.在列表尾添加元素 B.在列表中插入元素 2.列表中" ...
- Python中的原始字符串
Python中的原始字符串以r开头,使用原始字符串可以避免字符串中转义字符带来的问题. 其实所谓原始字符串,都是给人看的.对于计算机来说,没有什么原始字符串的概念.只是输出给人看的时候,会有一些\n. ...
- python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...
html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...
- 总结python中列表、元组、字典、集合的共同点和不同点
前言: 今天就和大家只聊聊python中列表.元组.字典.集合的共同点和不同点,能力有限,写的不好的地方,请大家多多海涵! 列表list 列表和元组·都是有序的 # 元组与列表相似可以通过索引与切片获 ...
- Python中如何修改字符串的值
Python中列表list中的值是可修改的,而元组和字符串的值是不可修改的.看下面的示例: string = 'abcdafg'string[4] = 'e'print(string) 输出结果: s ...
- python中列表的运用_python中列表的应用
标签: 本文主要介绍了:python中列表的主要应用和一些列表自带的一些函数 代码: #!/usr/bin/env python # author by lh # -*- coding:utf-8 - ...
最新文章
- android.support.v7.app.ActionBarActivity
- 孝感职称计算机考试时间,孝感2017年职称计算机考试报名3月中下旬
- 牛客-牛牛的猜球游戏
- 正则表达式30分钟入门教程(转)
- Yearn V2 Vaults Swap发布,目前未经审核
- 【Qt串口波形绘图】基于QCustomPlot的串口波形绘图上位机,源码开放
- 【C/C++】顺序容器list和vector
- hive 如何将数组转成字符串_Hive 字符串操作[转]
- [2018.04.29 T1] 图
- android 缓存文件目录在哪个文件夹,哔哩哔哩缓存在哪个文件夹 具体操作步骤
- 面试官看到一定会打我---软件测试工程师面试套路和暗语灵魂解密
- 瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient)
- 《JavaScript_DOM编程艺术》Chapter05 最佳实践,Chapter06 图片库改进版---20210427
- czl蒻蒟的OI之路7
- GameObject.Find()能否查找隐藏属性的游戏对象?
- QT遇到“常量中有换行符”的问题
- 央行数字货币研究报告:法定数字币势在必行,或先应用于票据领域
- 淘宝小部件:全新的开放卡片技术
- 百度地图(常用方法)
- TinyRTC DS1307 的使用