【Python初级】由判定回文数想到的,关于深浅复制,以及字符串反转的问题

简介: 尝试用Python实现可以说是一个很经典的问题,判断回文数。让我们再来看看回文数是怎么定义的:回数是指从左向右读和从右向左读都是一样的数,例如1,121,909,666等解决这个问题的思路,可以说大体上分为两种:1.从首部和尾部同时向中间靠拢,判定首尾数字是否相等(比较复杂)2.直接反转数字,看反转前反转后数字是否相等(最常用)第一种方法也可以理解为一种更加复杂,但是思想不变的第二种方法。

尝试用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指向的内容也会被一同发生更改呢?

 看了下面的这篇文章,恍然大悟

Python中“=”、浅复制与深复制的区别

然后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中常见的字符串倒置方法的博文(面试必备哦)

Python中字符串倒置的常见方法(比较齐全)

 

目录
相关文章
|
1月前
|
Python
Python中通过字符串访问与修改局部变量
Python中通过字符串访问与修改局部变量
48 0
|
4天前
|
SQL JSON C语言
Python中字符串的三种定义方法
Python中字符串的三种定义方法
|
6天前
|
索引 Python
Python学习笔记----操作字符串
这篇文章是一份Python字符串操作的学习笔记,涵盖了字符串相加、序列相加、字符串长度和字符的查找、统计、分割、连接、替换、去除空白、大小写转换以及判断字符串是否由字母和数字组成等常用方法。
Python学习笔记----操作字符串
|
10天前
|
Python
2:Python字符串与数字
这段代码示例展示了Python中的字符串定义、字符串操作(如连接和重复)、基本算术运算以及条件判断。字符串可通过单双引号定义。字符串支持加法(连接)与乘法(重复)。数字变量支持加减乘除等运算。示例还对比了两个条件语句代码块:第一个因使用全角冒号及未闭合字符串引发语法错误;第二个则正确无误,当条件为真时将输出"我是神仙"和"我是高手"。这强调了遵循Python语法规范的重要性。
|
19天前
|
IDE API 开发工具
|
1月前
|
存储 Python 容器
Python基础语法:变量和数据类型详解(整数、浮点数、字符串、布尔值)
变量和数据类型是Python编程的基础,理解这些概念对于编写高效和正确的代码至关重要。通过本文的介绍,希望你能对Python中的变量和常用数据类型有一个清晰的认识,并能够在实际编程中灵活运用这些知识。
|
5天前
|
存储 数据安全/隐私保护 索引
Python基础语法day02字符串详解和列表
Python基础语法day02字符串详解和列表
|
28天前
|
Python
Python小技巧:一种字符串的排序方式
Python小技巧:一种字符串的排序方式
16 0
|
7天前
|
Python
python字符串的拼接和拆分,看这一篇就够了
python字符串的拼接和拆分,看这一篇就够了
17 0
|
1月前
|
Java 开发者 Python
Python中,字符串(String)是一种不可变的数据类型
Python中,字符串(String)是一种不可变的数据类型