【python】reverse()和reversed()

在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))

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值