在Python中,reverse()
和 reversed()
都与反转序列有关,但它们的用法和返回值有所不同。
reverse()
方法
reverse()
是 list
类型的一个方法,用于就地(in-place)反转列表中的元素顺序。这意味着它会直接修改原列表,而不创建新的列表。由于 reverse()
方法改变了列表本身,所以它没有返回值(或者说返回 None
)。
示例:
my_list = [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list) # 输出: [5, 4, 3, 2, 1]
reversed()
函数
reversed()
是一个内置函数,它接受一个序列(如列表、元组、字符串等)作为参数,并返回一个反向迭代器。这个迭代器可以被用来创建一个新的反转后的列表或字符串,但它不会修改原始序列。
示例:
my_list = [1, 2, 3, 4, 5]
for item in reversed(my_list):
print(item) # 输出: 5 4 3 2 1
# 使用列表推导式或 join() 方法将 reversed() 的结果转换为列表或字符串
reversed_list = list(reversed(my_list))
print(reversed_list) # 输出: [5, 4, 3, 2, 1]
reversed_str = ''.join(reversed('hello'))
print(reversed_str) # 输出: 'olleh'
总结
reverse()
方法用于直接修改原列表,不返回任何值。reversed()
函数返回一个迭代器,可以用来创建一个新的反转序列,不会改变原始序列。
在选择使用 reverse()
还是 reversed()
时,需要根据是否需要保留原序列的顺序以及是否需要一个新的反转序列来决定。如果需要保留原列表,应该使用 reversed()
;如果不需要保留原列表,可以使用 reverse()
来节省内存。
例题:
def is_palindrome_recursive(s,start,end):
if start>=end:
return True
if s[start]!=s[end]:
return False
return is_palindrome_recursive(s,start+1,end-1)
s=input("输入字符串:")
s1=s[::-1]
if s1==s:
print("方法一:{}是回文字符串".format(s))
for i in range(len(s)//2):
if(s[i]!=s[len(s)-1-i]):
print("方法二:{}不是回文字符串".format(s))
break;
else:
print("方法二:{}是回文字符串".format(s))
s3=list(s)
s3.reverse()
if ''.join(s3)== s:
print("方法三:{}是回文字符串".format(s))
s4=''.join(reversed(s))
if s4 == s:
print("方法四:{}是回文字符串".format(s))
if is_palindrome_recursive(s,0,len(s)-1):
print("方法五:{}是回文字符串".format(s))
else:
print("方法五:{}不是回文字符串".format(s))
结果: