|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def func(string):
- list1 = list(string)
- print(list1)
- list2 = list1.reverse()
- print(list2)
- if list1 == list2:
- print('是回文')
- else:
- print('不是回文')
- func('上海自来水来自海上')
复制代码
为何输出是
['上', '海', '自', '来', '水', '来', '自', '海', '上']
None
不是回文
为何打印list2是None,而不是列表?
- def func(string):
- list1 = list(string)
- print(list1)
- list2 = reversed(list1)
- print(list2)
- if list1 == list(list2):
- print('是回文')
- else:
- print('不是回文')
- func('上海自来水来自海上')
复制代码
为什么只有这样的表达 打印list2时也不是列表,list(list2)这样才能打印出列表?
希望有人指点一下,谢谢
因为reverse()是可变对象(字典、列表)的方法,无参数,无返回值,reverse()会改变可变对象,因此无需返回值。
reversed(seq)的返回值则是个逆置的迭代器,返回一个迭代器(迭代器的意思是只能通过循环来输出)。如:
a = '321'
b = reversed(a)
print(b)
>>> <reversed object at 0x02E2B090>
显示的是返回了一个迭代器
迭代器用循环输出
for i in b:
print(i,end =' ')
也可以用list显示出来如:
>>> 1 2 3
>>> a = reversed(range(10)) # 传入range对象
>>> a # 类型变成迭代器
<range_iterator object at 0x035634E8>
>>> list(a)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a = ['a','b','c','d']
>>> a
['a', 'b', 'c', 'd']
>>> reversed(a) # 传入列表对象
<list_reverseiterator object at 0x031874D0>
>>> b = reversed(a)
>>> b # 类型变成迭代器
<list_reverseiterator object at 0x037C4EB0>
>>> list(b)
['d', 'c', 'b', 'a']
reverse没什么鸟用,对于字符串、列表、元组来说都可以用a[::-1]来取反.比如你的程序可以改成:
def func(string):
list1 = list(string)
print(list1)
list2 = list1[::-1]
print(list2)
if list1 == list2:
print('是回文')
else:
print('不是回文')
func('上海自来水来自海上')
多么的简单明了。
|
|