看了西红柿的博客,此文纯搬运,方便自己查询用。

原文:https://www.cnblogs.com/tomato0906/articles/4890701.html

1、python中的字符串类型是不允许直接修改元素的。必须先把要排序的字符串放在容器里,如list。

python中list容器的sort()函数没有返回值。所以在python中对字符串排序需要好几行代码:

s="string"

l=list(s)

l.sort()

s="".join(l)

print s    'ginrst'

一行代码搞定字符串排序的方法:

s="string"

s="".join((lambda x:(x.sort(),x)[1])(list(s)))

---------------------------------------------------------------------------------------------------------

string = '''''
the stirng
Has many
line In
THE fIle
'''
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()<span style="white-space:pre"> </span>#对元组排序,因为元组为:(忽略大小写的字符串,字符串),就是按忽略大小写的字符串排序 return [x[1] for x in listtemp]  #排序完成后,返回原字符串的列表 print case_insensitive_sort(list_of_string)  #调用起来,测试一下

2、使用内建函数

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

代码如下:

def case_insensitive_sort2(liststring):
return sorted(liststring,key = str.lower)

3、

使用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

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

———————————————————————————————————————————

根据字符串长度来排序

给定字符串:xs = ['dddd','a','bb','ccc']

输出排序的结果:['a','bb','ccc','dddd']
解决1:
xs.sort(key=len)
解决2:
xs.sort(lambda x,y: cmp(len(x), len(y)) 
注意:当传递lambda给sort时,需要返回integer,而不能为bool数
使用:
xs.sort(lambda x,y: len(x) < len(y))则不对。
——————————————————————————————————————————

python根据字符串中的内嵌的数字排序

l = [ 'ch9.txt', 'ch10.txt', 'ch1.txt', 'ch3.txt', 'ch11.txt' ]
排序完成后
l=[ 'ch1.txt', 'ch3.txt', 'ch9.txt', 'ch10.txt', 'ch11.txt' ]
import re
l = [ 'ch9.txt', 'ch10.txt', 'ch1.txt', 'ch3.txt', 'ch11.txt' ]
p = re.compile("(\d+)")
def my_cmp(v1, v2):
d1 = [int(i) for i in p.findall(v1)][0]
d2 = [int(i) for i in p.findall(v2)][0]
return cmp(d1, d2) l.sort(my_cmp)
print l >>> import re
>>>
>>> l = [ 'ch9.txt', 'ch10.txt', 'ch1.txt', 'ch3.txt', 'ch11.txt' ]
>>>
>>> p = re.compile("(\d+)")
>>>
>>> def my_cmp(v1, v2):
... d1 = [int(i) for i in p.findall(v1)][0]
... d2 = [int(i) for i in p.findall(v2)][0]
... return cmp(d1, d2)
...
>>>
... l.sort(my_cmp)
>>>
>>> print l
['ch1.txt', 'ch3.txt', 'ch9.txt', 'ch10.txt', 'ch11.txt']
>>> 一句代码足以
l.sort(key = lambda x:int(re.match('\D+(\d+)\.txt',x).group(1)))

Python字符串排序的更多相关文章

  1. python字符串排序方法

    一般情况下,python中对一个字符串排序相当麻烦: 一.python中的字符串类型是不允许直接改变元素的.必须先把要排序的字符串放在容器里,如list. 二.python中的list容器的sort( ...

  2. python 自定义排序函数

    自定义排序函数 Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 ...

  3. Python的排序

    1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a','have','I' ...

  4. python 字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  5. 7.python字符串-内置方法分析

    上篇对python中的字符串内置方法进行了列举和简单说明,但这些方法太多,逐一背下效率实在太低,下面我来对这些方法按照其功能进行总结: 1.字母大小写相关(中文无效) 1.1 S.upper() -& ...

  6. python字符串-内置方法用法分析

    1.字母大小写相关(中文无效) 1.1 S.upper() -> string 返回一个字母全部大写的副本

  7. Python字符串与容器

    []运算符是Python中访问容器元素和切片的运算符 []有正向和反向两种下标,正向下标从0开始,向后递增: 反向下标以-1表示最后一个元素,-2表示倒数第二个字符,向前递减. []不仅可以访问单个元 ...

  8. <转>python字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  9. python字符串反转 高阶函数 @property与sorted(八)

    (1)字符串反转 1倒序输出 s = 'abcde' print(s[::-1]) #输出: 'edcba' 2 列表reverse()操作 s = 'abcde' lt = list(s) lt.r ...

随机推荐

  1. 条件锁Condition

    """设计场景:timo先说一句,亚索再说一句timo: timo队长正在待命yasuo: 面对疾风吧timo: timo整装待发yasuo: 哈杀gay "& ...

  2. cocos Studio 特效文件播放失败

    可能是json文件中file的Path不对引起的.因为生成的path是根据文件在项目中的path生成的,即当此特效不是项目的一级目录时,会带有项目中上级目录,导致找不到文件(不会报错). ccs.lo ...

  3. 09 部署nginx web服务器(转发uwsgi请求)

    1 配置nginx转发 $ whereis nginx $ cd /usr/local/nginx/conf $ vi nginx.conf 注释掉原来的html请求,增加uwsgi请求. locat ...

  4. Linux - Shell - 算数表达式 - 关系运算

    概述 shell 中基于 $(()) 的 关系运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 位运算 代码 #!/bin/bash # 关系运算符 # 结果是 真/ ...

  5. CSS技巧!鼠标经过图片抖动效果

    把代码加到style.css(模板的主css里面): /**图片抖动**/ img:hover{-webkit-animation: tada 1s .2s ease both;-moz-animat ...

  6. 安装php-zbarcode的步骤方法

    1 安装ImageMagick依赖 yum install ImageMagick ImageMagick-devel 2 安装zbar拓展 wget -c http://jaist.dl.sourc ...

  7. 用navicate 连接本地数据库提示用户名/口令无效

    1.在用navicate连接本地的oracle数据库时,试了oracle几个默认的用户名和密码,但是当我输入时,却提示用户名/口令无效.所以按照网上的办法,cmd,输入了以下命令,修改了几个用户的用户 ...

  8. 初识Java爬虫之Jsoup,提供参考代码

    本文主要分享的是关于Java爬虫技术其中一个方式   ==>  Jsoup 1.Jsoup简介 推开技术大门,爬虫技术琳琅满目,而今天要分享的Jsoup是一款Java的HTML解析神器,,可直接 ...

  9. 使用命令把SpringBoot项目打包成可运行的jar包(简洁,操作性强)

    前几天接到一个需求,要把原系统中一个数据处理小功能搬出原系统,拉出来单独做一个SpringBoot项目,然后打成jar包扔到Windows服务器上运行,这样数据处理的时候如果遇到堵塞就不至于整个系统都 ...

  10. nvalidSchema: Missing dependencies for SOCKS support

    首先需要安装pip3 1. 安装 setuptools wget --no-check-certificate https://pypi.python.org/packages/source/s/se ...