【Python初级】由判定回文数想到的,关于深浅复制,以及字符串反转的问题
尝试用Python实现可以说是一个很经典的问题,判断回文数。
让我们再来看看回文数是怎么定义的:
回数是指从左向右读和从右向左读都是一样的数,例如1,121,909,666等
解决这个问题的思路,可以说大体上分为两种:
1.从首部和尾部同时向中间靠拢,判定首尾数字是否相等(比较复杂)
2.直接反转数字,看反转前反转后数字是否相等(最常用)
第一种方法也可以理解为一种更加复杂,但是思想不变的第二种方法。
其中我一开始的代码是这样写的:
1 def is_palindrome(n): 2 L1=list(str(n)) 3 L2=L1 4 L1.reverse() 5 if L2==L1: 6 return True 7 else: 8 return False
但后来发现无论传入的是什么数字,都会被判定为回文数。一开始百思不得其解,后来无意中想起来了python中变量名是看作指向实际对象的指针,所以是不是代码中对L1内容的更改,L2指向的内容也会被一同发生更改呢?
看了下面的这篇文章,恍然大悟
然后import了copy包,并更改了代码,总算是正常了。正常的代码如下:
1 def is_palindrome(n): 2 L1=list(str(n)) 3 L2=copy.deepcopy((L1))#我这里使用的是深复制,其实浅复制在这个环境问题下也可以哦 4 L1.reverse() 5 if L2==L1: 6 return True 7 else: 8 return False
最后总算是能正常判定回文数了。但还没完,在网上看到了大神更加简洁的代码:
1 def is_palindrome(n): 2 temp1=str(n) 3 return temp1==temp1[::-1]
为什么能如此简洁呢?原因就是,根据一开始提到的算法,核心就在于字符串的倒置。而利用python的切片功能,刚好可以方便的实现倒置,而且还不用考虑深浅复制问题。这里也给大家贴一个介绍python中常见的字符串倒置方法的博文(面试必备哦)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spark2.1.0之内置RPC框架
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/beliefer/article/details/80799622 在Spark中很多地方都涉及网络通信,比如Spark各个组件间的消息互通、用户文件与Jar包的上传、节点间的Shuffle过程、Block数据的复制与备份等。在Spark 0.x.x与Spark 1.x.x版本中,组件间的消息通信主要借助于Akka[1],使用Akka可以轻松的构建强有力的高并发与分布式应用。但是Akka在Spark 2.0.0版本中被移除了,Spark官网文档对此的描述为:“Akka的依赖被移除了,因此用户可以使用任何版本的Akka来编程了。”Spark团队的决策者或许认为对于Akka具体版本的依赖,限制了用户对于Akka不同版本的使用。尽管如此,笔者依然认为Akka是一款非常优秀的开源分布式系统,我参与的一些Java Application或者Java Web就利用Akka的丰富特性实现了分布式一致性、最终一致性以及分布式事务等分布式环境面对的问题。在Spark 1.x.x版本中,用户文件与Jar包的上...
- 下一篇
Java开发者的PaaS指南
简介 我从事软件开发工作已有20多年,在此期间,我参与了各种不同的环境下,各类软件系统的搭建工作,其中大部分系统都以Java和web技术为核心,当然其他技术也有所接触。同时,我也有幸参与了从开始到交付的整个软件开发过程。不过在基础设施这一块,我没有参与太多。另外,我也创建过一些服务器,但大多数生产基础设施的构建都是由基础设施团队完成的。我认为这很常见。提供生产级基础设施是一项专门的任务;需要了解安装、配置和强化操作系统、数据库、负载平衡器、防火墙等方面的知识。坦率来讲,这都不是我特别感兴趣的,尤其身在软件行业,我们都需要不断地去学习新知识、新技能,新技术的更新换代实在太快。 记得三年前,我在匈牙利布达佩斯的Craft Conference上,曾就我的一个名为Structurizr的创新应用程序和与会者进行了多次探讨。这个程序的初期演示是在Rackspace的Ubuntu上运行的,但牵扯到了一系列基础设施和操作上的问题,这些问题的解决不在我的能力范围内。会中我收到的一个建议是, 我可以去关注一下Pivotal Web Services这个 PaaS云服务。我确实也在泽西运营一些当地学校的...
相关文章
文章评论
共有0条评论来说两句吧...