目录
  • 序列的逆序方式
    • 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 函数则可以翻转多种序列,包括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')
    

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

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。