关于19讲动动手第0题的reverse问题
我又又又又遇到问题了{:10_266:} {:10_266:} {:10_266:}def huilianwen(string):
list1 = list(string)
list2 = list1[:]
list3 = list1.reverse()
if list2 == list3:
return '是回联文'
else:
return '不是回联文'
print(huilianwen('上海自来水来自海上'))
结果为不是回联文 。
{:10_254:} {:10_254:} {:10_254:} 有懂的大哥可以帮忙分析一下吗 本帖最后由 suchocolate 于 2020-11-17 09:29 编辑
list的reverse()不返回内容,而是直接改变原列表,所以list3什么也没有。
按下面写,不用倒转,直接判断。
def ckhw(strs):
if strs == strs[::-1]:
return '是回联文'
else:
return '不是回联文'
print(ckhw('上海自来水来自海上')) suchocolate 发表于 2020-11-17 09:25
list的reverse()不返回内容,而是直接改变原列表,所以list3什么也没有。
按下面写,不用倒转,直接判断。 ...
def huilianwen(string):
list1 = list(string)
list2 = list1[:]
if list2 == list1.reverse():
return '是回连文'
else:
return '不是回连文'
print(huilianwen('上海自来水来自海上'))
这样结果还是不是回连文
def huilianwen(string):
list1 = list(string)
list2 = list1[:]
list1.reverse()
if list2 == list1:
return '是回连文'
else:
return '不是回连文'
print(huilianwen('上海自来水来自海上'))
但是这样就对了,为什么list2 == list1.reverse()这样还是不可以
hero533 发表于 2020-11-17 09:34
这样结果还是不是 ...
list的reverse()不返回内容 suchocolate 发表于 2020-11-17 09:45
list的reverse()不返回内容
好的,谢谢大哥,新知识get{:10_298:} hero533 发表于 2020-11-17 09:53
好的,谢谢大哥,新知识get
python自带的reversed()函数可以返回,但返回的是迭代器,不适合做回文判断,所以还是用[::-1]这种直接。
ls1 =
ls2 = reversed(ls1)
print(type(ls2))
print(ls2)
for i in ls2:
print(i)
hero533 发表于 2020-11-17 09:34
这样结果还是不是 ...
Python 的列表绝大多数方法是在原列表上进行改变且没有返回值
例如reverse()、 extend()、append()、remove() 等没有返回值,但是 pop() 函数有返回值哈
当 Python 的函数或者方法没有返回值时候, Python 会默认返回一个None
所以这里list1.reverse() 返回的是一个 None ,而 list2 =list1.reverse() 即 list2 = None 条件永不成立
Twilight6 发表于 2020-11-17 13:02
Python 的列表绝大多数方法是在原列表上进行改变且没有返回值
例如reverse()、 extend()、append() ...
{:10_297:} 谢谢,记住了
页:
[1]