• 技术文章 >Python技术 >Python基础教程

    python 序列的逆序

    宋雪维宋雪维2020-12-03 08:56:39原创3326

    python中实现序列逆序的方法

    1. range 函数

    2. reversed 函数

    3. 其他方法

    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 函数则可以翻转多种序列,包括tupleliststringrange等类型。
    由于
    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

    注意

    1. listtuplerange 类型均可相互转换,但str类型不同;
    2. 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
    专题推荐:python序列
    上一篇:python简易版挖矿小游戏 下一篇:python对列表中的元素进行去重操作

    相关文章推荐

    • 列表解析式如何使python3代码更加精简?• python random的shuffle怎么用?• python format函数如何与字符串拼接?• python列表可以求平均值吗?如何实现?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网