python中序列的逆序方式

 更新时间:2022年05月19日 09:35:31   作者:z語默  
这篇文章主要介绍了python中序列的逆序方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

序列的逆序方式

1. range 函数

一般 for 循环中总会用到 range 函数来进行顺序遍历,同样的,range 也能表示序列的逆序。

在 range(start, end, step) 中,start 表示序列的起始索引(默认为0),end 表示终止索引,step 表示移动步长(默认为1)。由于 range 函数是“顾头不顾尾” 的形式,因此实际上其遍历的索引终止位置是 end 的前一个索引。

比如:

list(range(5)) = [0, 1, 2, 3, 4]
list(range(1, 5)) = [1, 2, 3, 4]
list(range(1, 5, 1)) = [1, 2, 3, 4]
list(range(1, 5, 2)) = [1, 3]

同理,逆序遍历只需将步长 step 设为负值即可。

比如:

list(range(5, 1, -1)) = [5, 4, 3, 2]
list(range(5, -2, 2)) = [5, 3, 1, -1]

这样,在 for 循环中既可以实现顺序遍历,也可以进行逆序遍历。

2. reversed 函数

在 python3 中,reversed 函数也能够逆转列表。

其实,在 python2.7 中就存在内置函数 reverse 可以用来翻转列表,不过在 python3 中已经删去该函数。

相比于 reverse 函数只能反转列表,reversed 函数则可以翻转多种序列,包括tuple、list、string、range等类型。

由于 reversed 函数实际上是一个类,因此其直接输出的是对应序列值反转后的迭代器,需要由对应类型的方法获取反转后的值。

比如:

# 列表反转
a = [1, 2, 3, 4, 5]
print(reversed(a))  # 输出:<list_reverseiterator object at 0x00000233F1C96588>
print(list(reversed(a)))  # 输出:[5, 4, 3, 2, 1]
# 元组反转
a = (1, 2, 3, 4, 5)
print(reversed(a))  # 输出:<reversed object at 0x000001FE9B3A6588>
print(tuple(reversed(a)))  # 输出:(5, 4, 3, 2, 1)
# 字符串反转
a = '12345'
print(reversed(a))  # 输出:<reversed object at 0x000001FAD17E2438>
print(str(reversed(a)))  # 输出:<reversed object at 0x000001FAD17E2438>
print("".join(reversed(a)))  # 输出:54321

注意:

  • list、tuple、range 类型均可相互转换,但str类型不同;
  • str类型反转序列输出采用"".join(reversed(string)))方法,即将反转序列按顺序添加进新的字符串序列中。

不过,reversed 函数只能对已有序列做完全反转,若只是想对序列其中一部分进行反转,需要先截取对应序列再反转,也可以用 range 函数遍历所需部分序列。

3. 其他方法

除了以上两种方法外,对于字符串序列,还可以用切片反转方法进行反转。

比如:

a = 'hello world'
print("".join(reversed(a)))  # 输出:dlrow olleh
print(a[::-1])  # 输出:dlrow olleh
print(a[::-2])  # 输出:drwolh

一个字符串的逆序函数

ef nixv(s):
    sum = " "                          #定义空字符串
    for i in reversed(range(len(s))): #i逆序遍历
        sum = sum + s[i]              #使单独的字符串组合成整体
    return sum                        #返回字符串
s = input("请输入一个字符串:")
print(nixv(s))

# 方法二
s='wqrwqr123'
print(s[::-1])# 切片

# 方法三
from functools import reduce
s='123456'
result =reduce(lamada x,y:y+x,s)
print(result)

# 方法四
def fan(str1):
    len1=len(str1)
    for i in range(len1):
        print(str1[len1-1-i],end='')
fan('asdfg')

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python爬取城市租房信息实战分享

    Python爬取城市租房信息实战分享

    这篇文章主要介绍了Python爬取城市房租房信息实战分享,先单线程爬虫,测试可以成功爬取之后再优化为多线程,最后存入数据库,需要的小伙伴可以参考一下的相关资料
    2022-04-04
  • pycharm Tab键设置成4个空格的操作

    pycharm Tab键设置成4个空格的操作

    这篇文章主要介绍了pycharm Tab键设置成4个空格的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 关于Python网络爬虫requests库的介绍

    关于Python网络爬虫requests库的介绍

    这篇文章主要介绍了关于Python网络爬虫requests库,而很多时候这些数据存储在网页中,手动下载需要花费的时间太长,这时候我们就需要网络爬虫帮助我们自动爬取这些数据,需要的朋友可以参考下
    2023-04-04
  • python实用代码片段收集贴

    python实用代码片段收集贴

    这篇文章主要介绍了python实用代码片段收集贴,本文收集了如获取一个类的所有子类、计算运行时间、SQLAlchemy简单使用、实现类似Java或C中的枚举等实用功能代码,需要的朋友可以参考下
    2015-06-06
  • java中的控制结构(if,循环)详解

    java中的控制结构(if,循环)详解

    这篇文章简单地介绍了java中的控制结构(if,循环)文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们来学习下吧
    2019-06-06
  • python和numpy matplotlib版本匹配及安装指定版本库

    python和numpy matplotlib版本匹配及安装指定版本库

    Matplotlib 是 Python 的绘图库,它经常与NumPy一起使用,从而提供一种能够代替Matlab的方案,这篇文章主要给大家介绍了关于python和numpy matplotlib版本匹配及安装指定版本库的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Python os.rename() 重命名目录和文件的示例

    Python os.rename() 重命名目录和文件的示例

    今天小编就为大家分享一篇Python os.rename() 重命名目录和文件的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 一文详解Python中生成器的原理与使用

    一文详解Python中生成器的原理与使用

    生成器表达式本质上就是一个迭代器,是定义迭代器的一种方式,是允许自定义逻辑的迭代器。本文将详细讲解一下Python中生成器的原理与使用,需要的可以参考一下
    2022-05-05
  • Flask实现跨域请求的处理方法

    Flask实现跨域请求的处理方法

    这篇文章主要介绍了Flask实现跨域请求的处理方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 如何使用django的MTV开发模式返回一个网页

    如何使用django的MTV开发模式返回一个网页

    这篇文章主要介绍了如何使用django的MTV开发模式返回一个网页,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论