标签: python

python 排序 sort和sorted的区别,使用和坑

python sort和sorted的区别,使用和坑

sort和sorted区别:

(本文根据B站up主码农高天的视屏整理)

sort跟sorted都是python自带的排序函数,两者的使用方法基本一致。
最大的区别是sort会改变原有列表,而sorted不会改变原有列表并且会返回一个新列表。

sort 和sorted的使用:

a = [1,25,2,5,4,3,6]
b = sorted(a)
print(a)
print(b)
a.sort()
print(a)

打印结果如下,sort改变了原有列表,而sorted没有

我们在使用sort和sorted的时候可以搭配匿名函数使用,这种方法使用的频率较高,一定要掌握

# lst[lst] with sort
a = [[‘xueling’,0],[‘yujie’,2],[‘aitty’,1],[‘xls’,2]]
a.sort(key=lambda x:x[1],reverse=True)
print(a)
# 通过匿名函数来指定key,实现对lst中第二项进行排序

运行结果: [[‘yujie’, 2], [‘xls’, 2], [‘aitty’, 1], [‘xueling’, 0]]

往高处延伸

有时候我们会遇到两次排序的问题:
1,先根据数的次数进行排序
2,当数字相同时根据数的大小从大到小进行排序

我们可以这样写:

b = [2,3,3,2,3,1,4]
b = sorted(b,key=lambda x:(b.count(x),x),reverse=True)
print(b)

运行结果:[3, 3, 3, 2, 2, 4, 1]

sort 的坑

当然,我们也可以用sort来写

b.sort(key=lambda x:(b.count(x),-x))
print(b)

运行结果:[4, 3, 3, 3, 2, 2, 1]
我们发现使用sort运行的结果是错误的,这其实是sort本身编写的问题,涉及底层的架构,所以我们在写sort发现错误的时候,可以尝试把它改写成sorted来判断是不是我们代码本身的错误,sorted是不会错的。

这种错误,其实只会在sort二次排序时才会出现,像key=lambda x:x[1]这样的是不会出现排序错误的。
sort的这种错误,可以说是python的一个bug吧。

Python 正则表达式匹配中文

# 测试匹配中文信息
def TestReChinese( ):
source = u” 数据结构模版—-单链表SimpleLinkList[带头结点&&面向对象设计思想](C语言实现)”
temp = source.decode(‘utf8’)
print “同时匹配中文英文”
print “————————–”
xx = u”([\w\W\u4e00-\u9fff]+)”
pattern = re.compile(xx)
results = pattern.findall(temp)
for result in results:
print result
print “————————–”
print
print
print “只匹配中文”
print “————————–”
xx = u”([\u4e00-\u9fff]+)”
pattern = re.compile(xx)
results = pattern.findall(temp)

for result in results:
print result
print “————————–”

if __name__ == “__main__” :
# 测试正则表达式

reload(sys)
sys.setdefaultencoding(“utf-8”)

TestReChinese( )

python生成exe文件

1、安装Pyinstaller,在cmd窗口,输入指令“pip install pyinstaller”进行网络安装。

2、使用指令“pyinstaller -F D:\\文件夹\xxx.py”生成exe文件

-F生成的有命令框,-Fw生成的没有命令框

3、等待生成完毕后,回到源文件目录,在dist目录下,找到生成的exe文件,即可完成Python生成exe文件操作。