zoukankan      html  css  js  c++  java
  • 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)))

      

  • 相关阅读:
    MySQL数据库操作(4)表约束
    通过C学Python(3)列表的常用方法
    MySQL数据库操作(2)基本操作
    通过C学Python(1)关于语言、数值类型和变量
    通过C学Python(2)序列类型
    MySQL数据库操作(1)用户与权限
    一个文章单词分析作业
    pyCharm的几个配置
    MySQL数据库操作(3)表结构操作
    shell脚本中的for循环和while循环
  • 原文地址:https://www.cnblogs.com/yuxc/p/2132386.html
Copyright © 2011-2022 走看看