Python字符串排序
看了西红柿的博客,此文纯搬运,方便自己查询用。
原文: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']
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字符串排序的更多相关文章
- python字符串排序方法
一般情况下,python中对一个字符串排序相当麻烦: 一.python中的字符串类型是不允许直接改变元素的.必须先把要排序的字符串放在容器里,如list. 二.python中的list容器的sort( ...
- python 自定义排序函数
自定义排序函数 Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 ...
- Python的排序
1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a','have','I' ...
- python 字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- 7.python字符串-内置方法分析
上篇对python中的字符串内置方法进行了列举和简单说明,但这些方法太多,逐一背下效率实在太低,下面我来对这些方法按照其功能进行总结: 1.字母大小写相关(中文无效) 1.1 S.upper() -& ...
- python字符串-内置方法用法分析
1.字母大小写相关(中文无效) 1.1 S.upper() -> string 返回一个字母全部大写的副本
- Python字符串与容器
[]运算符是Python中访问容器元素和切片的运算符 []有正向和反向两种下标,正向下标从0开始,向后递增: 反向下标以-1表示最后一个元素,-2表示倒数第二个字符,向前递减. []不仅可以访问单个元 ...
- <转>python字典排序 关于sort()、reversed()、sorted()
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- python字符串反转 高阶函数 @property与sorted(八)
(1)字符串反转 1倒序输出 s = 'abcde' print(s[::-1]) #输出: 'edcba' 2 列表reverse()操作 s = 'abcde' lt = list(s) lt.r ...
随机推荐
- eclipse怎么debug项目
1.打断点,服务器debug启动 2.debug:打断点,加项目.f5:进入方法 f6:下一行代码 f8:执行到下一个断点处
- Markdown上手使用
前言 学习Markdown主要是为了更好的编辑博客(捂脸),顺便学一学Markdown语法,毕竟MarkdownPad 2放着吃灰好久了(雾) MarkdownPad2 下载 链接:https://p ...
- selenium 百度登录
private String baseUrl="http://www.baidu.com/"; --------- @Test public void testLoginB() t ...
- Redis5-集群搭建实验
集群规划: nodeA:192.168.29.22(22-master,23-slave) nodeB:192.168.29.23(23-master,24-slave) nodeC:192.168. ...
- 基于alpine的php-fpm扩展swoole和pdo_mysql
vim Dockerfile 插入一下内容 FROM php:fpm-alpine RUN echo http://mirrors.aliyun.com/alpine/v3.10/main>/e ...
- python3 读取串口数据
python3 读取串口数据 demo import serial import time ser = serial.Serial("COM3",115200,timeout = ...
- [HNOI2017] 礼物 - 多项式乘法FFT
题意:给定两个 \(n\) 元环,环上每个点有权值,分别为 \(x_i, y_i\).定义两个环的差值为 \[\sum_{i=0}^{n-1}{(x_i-y_i)^2}\] 可以旋转其中的一个环,或者 ...
- python itertool 浅谈迭代工具
1.概述 Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个“无限”迭代器: import itertools natuals ...
- QT5.1+中文乱码问题
原文连接:https://blog.csdn.net/liyuanbhu/article/details/72596952 QT中规定 QString 的 const char* 构造函数是调用 fr ...
- 2D TOOLKIT备忘录
通过Clip名称更改动画片段 // 通过clip名称获取clip实例 tk2dSpriteAnimationClip clip = childrenAnimator.GetClipByName(&qu ...