【python】reverse()和reversed()

打印 上一主题 下一主题

主题 1612|帖子 1612|积分 4836

在Python中,reverse() 和 reversed() 都与反转序列有关,但它们的用法和返回值有所不同。
reverse() 方法

reverse() 是 list 类型的一个方法,用于就地(in-place)反转列表中的元素顺序。这意味着它会直接修改原列表,而不创建新的列表。由于 reverse() 方法改变了列表本身,所以它没有返回值(或者说返回 None)。
示例:
  1. my_list = [1, 2, 3, 4, 5]
  2. my_list.reverse()
  3. print(my_list)  # 输出: [5, 4, 3, 2, 1]
复制代码
reversed() 函数

reversed() 是一个内置函数,它担当一个序列(如列表、元组、字符串等)作为参数,并返回一个反向迭代器。这个迭代器可以被用来创建一个新的反转后的列表或字符串,但它不会修改原始序列。
示例:
  1. my_list = [1, 2, 3, 4, 5]
  2. for item in reversed(my_list):
  3.     print(item)  # 输出: 5 4 3 2 1
  4. # 使用列表推导式或 join() 方法将 reversed() 的结果转换为列表或字符串
  5. reversed_list = list(reversed(my_list))
  6. print(reversed_list)  # 输出: [5, 4, 3, 2, 1]
  7. reversed_str = ''.join(reversed('hello'))
  8. print(reversed_str)  # 输出: 'olleh'
复制代码
总结



  • reverse() 方法用于直接修改原列表,不返回任何值。
  • reversed() 函数返回一个迭代器,可以用来创建一个新的反转序列,不会改变原始序列。
在选择使用 reverse() 照旧 reversed() 时,需要根据是否需要保留原序列的顺序以及是否需要一个新的反转序列来决定。如果需要保留原列表,应该使用 reversed();如果不需要保留原列表,可以使用 reverse() 来节省内存。
例题:
  1. def is_palindrome_recursive(s,start,end):
  2.     if start>=end:
  3.         return True
  4.     if s[start]!=s[end]:
  5.         return False
  6.     return is_palindrome_recursive(s,start+1,end-1)
  7. s=input("输入字符串:")
  8. s1=s[::-1]
  9. if s1==s:
  10.     print("方法一:{}是回文字符串".format(s))
  11. for i in range(len(s)//2):
  12.     if(s[i]!=s[len(s)-1-i]):
  13.         print("方法二:{}不是回文字符串".format(s))
  14.         break;
  15. else:
  16.     print("方法二:{}是回文字符串".format(s))
  17.    
  18. s3=list(s)
  19. s3.reverse()
  20. if ''.join(s3)== s:
  21.     print("方法三:{}是回文字符串".format(s))
  22. s4=''.join(reversed(s))
  23. if s4 == s:
  24.     print("方法四:{}是回文字符串".format(s))
  25. if is_palindrome_recursive(s,0,len(s)-1):
  26.     print("方法五:{}是回文字符串".format(s))
  27. else:
  28.     print("方法五:{}不是回文字符串".format(s))
复制代码
效果:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户国营

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表