• Python美味食谱:1.7 将字符串逐字符或逐词反转


    目的

      把字符串逐字符或逐词反转过来,这个蛮有意思的。

    方法

      先看逐字符反转吧,第一种设置切片的步长为-1

      revchars=astring[::-1]

    In [65]: x='abcd'

    In [
    66]: x[::-1]
    Out[
    66]: 'dcba'

     

      第二种做法是采用reversed(),注意它返回的是一个迭代器,可以用于循环或传递给其它的“累加器”,不是一个已完成的字符串。

      revchars=''.join(reversed(astring))

    In [56]: y=reversed(x)

    In [
    57]: y
    Out[
    57]: <reversed object at 0x058302F0>

    In [
    58]: ''.join(y)
    Out[
    58]: 'dcba'

     

      接着来看逐词反转。

      第一种做法,创建一个列表,将列表反转,用join方法合并

    In [38]: s='Today is really a good day'

    In [
    39]: rev=s.split()

    In [
    40]: rev
    Out[
    40]: ['Today''is''really''a''good''day']

    In [
    41]: rev.reverse()

    In [
    42]: rev
    Out[
    42]: ['day''good''a''really''is''Today']

    In [
    45]: ' '.join(rev)
    Out[
    45]: 'day good a really is Today'

      也有一行解决的代码:

    rev=' '.join(s.split()[::-1])

      第二种做法,可以不改变原先的空格,采用正则式来做:

    In [46]: import re

    In [
    47]: rev=re.split(r'(\s+)',s)

    In [
    48]: rev
    Out[
    48]: ['Today'' ''is'' ''really'' ''a'' ''good'' ''day']

    In [
    49]: rev.reverse()

    In [
    50]: rev
    Out[
    50]: ['day'' ''good'' ''a'' ''really'' ''is'' ''Today']

    In [
    51]: rev=''.join(rev)

    In [
    52]: rev
    Out[
    52]: 'day good a really is Today'

      可以考虑采用reversed()来代替可读性较差的[::-1]


    revwords=' '.join(reversed(s.split()))

    revwords
    =''.join(reversed(re.split(r'(\s+)',s)))

      

  • 相关阅读:
    以前给工大软件学院作得首页
    rinruby
    螃蟹为什么煮熟后会变红?
    关于R中利用apply、tapply、lapply、sapply、mapply、table
    hp laserjet 1020驱动 for windows
    关于睡觉巻起来姿势
    王强英語
    进程的前后台切换
    研究生=烟酒生
    计算矩阵乘法的网页工具
  • 原文地址:https://www.cnblogs.com/yuxc/p/2132386.html
Copyright © 2020-2023  润新知