zoukankan      html  css  js  c++  java
  • python实现忽略大小写对字符串列表排序的方法

    这篇文章主要介绍了python实现忽略大小写对字符串列表排序的方法,通过三种不同的方法实现了对字符串的排序,是非常实用的技巧,需要的朋友可以参考下

    本文实例讲述了python实现忽略大小写对字符串列表排序的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下:

    先来看看如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    string = '''
    the stirng
    Has many
    line In
    THE fIle
    jb51 net
    '''
    list_of_string = string.split()
    print list_of_string   #将字符串分离开,放入列表中
    print '*'*50
     
    def case_insensitive_sort(liststring):
      listtemp = [(x.lower(),x) for x in liststring]#将字符串列表,生成元组,(忽略大小写的字符串,字符串)
      listtemp.sort()#对元组排序,因为元组为:(忽略大小写的字符串,字符串),就是按忽略大小写的字符串排序
     
      return [x[1] for x in listtemp]#排序完成后,返回原字符串的列表
     
    print case_insensitive_sort(list_of_string)#调用起来,测试一下

    结果:

    1
    2
    3
    ['the', 'stirng', 'Has', 'many', 'line', 'In', 'THE', 'fIle', 'jb51', 'net']
    **************************************************
    ['fIle', 'Has', 'In', 'jb51', 'line', 'many', 'net', 'stirng', 'THE', 'the']

    另一种方法:

    使用内建函数
    sorted(iterable[,cmp[, key[,reverse]]])

    该函数的官方描述文档如下:

    Return a new sorted list from the items in iterable.
    key specifies a function of one argument that is used to extract a comparison key from each list element:key=str.lower. The default value isNone.

    使用参数key=str.lower

    完整代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    string = '''
    the stirng
    Has many
    line In
    THE fIle
    jb51 net
    '''
    list_of_string = string.split()
    print list_of_string   #将字符串分离开,放入列表中
    print '*'*50
     
    def case_insensitive_sort2(liststring):
      return sorted(liststring,key = str.lower)
     
    print case_insensitive_sort2(list_of_string)#调用起来,测试一下

    效果一样~

    方法三:

    使用list的sort方法:

    该方法的官方描述文档如下:

    The sort() method takes optional arguments for controlling the comparisons.
    cmp specifies a custom comparison function of two arguments (list items) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument: cmp=lambda x,y: cmp(x.lower(), y.lower()). The default value is None.
    key specifies a function of one argument that is used to extract a comparison key from each list element: key=str.lower. The default value is None.
    reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.

    具体代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    string = '''
    the stirng
    Has many
    line In
    THE fIle
    jb51 net
    '''
    list_of_string = string.split()
    print list_of_string   #将字符串分离开,放入列表中
    print '*'*50
     
    def case_insensitive_sort3(liststring):
      liststring.sort(cmp=lambda x,y: cmp(x.lower(), y.lower()))
     
    case_insensitive_sort3(list_of_string)
    print list_of_string

    但这次调用的时候就有区别了。

  • 相关阅读:
    C# 文件压缩与解压(ZIP格式)
    sqlite 报 no such table 错误
    又一次的轮回
    什么是数据结构
    紧张繁忙的一周
    《编程匠艺》读书笔记之十九
    [转]软件开发者面试百问
    关于学习设计模式的一些废话
    雷人的山寨版搜索引擎
    [转]Struts 2.1发布
  • 原文地址:https://www.cnblogs.com/wdbgqq/p/10207197.html
Copyright © 2011-2022 走看看