1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python常用技巧了解一下?

Python常用技巧了解一下?

时间:2021-04-24 07:45:15

相关推荐

Python常用技巧了解一下?

前言

Python 是一门非常优美的语言,并且功能也非常强大。本文搜集并总结了一些 Python 常用的技巧,一方面自己巩固知识点,另一方面也可以给正在 Python 这条道路的同胞们一些指导。

话不多说,直接进入主题。

正文

交换变量值

快速交换两个变量的值,操作非常简单,示例如下:

a = 1b = 2print('before : a =',a,'b=',b)a,b = b,aprint('after : a =',a,'b=',b)

输出:

before : a = 1 b= 2after : a = 2 b= 1

合并列表中的所有元素

将一个列表中的所有元素合并起来,示例如下:

a = ["Python","is","good"]print(' '.join(a))

输出:

Python is good

这里使用空格来隔开每一个元素。

查找列表中出现频率最高的元素

在一个列表中,统计出重复最多的元素,并计算其重复次数,示例如下:

a = [1,2,3,3,4,5,6,1,2,7,2,9,1,2]print(max(set(a),key = a.count))from collections import Countercnt = Counter(a)print(cnt.most_common())

输出:

2[(2, 4), (1, 3), (3, 2), (4, 1), (5, 1), (6, 1), (7, 1), (9, 1)]

第一个打印,输出的是列表中出现的频率最高的元素

第二个打印,输出的是列表中每个元素出现的频率,用元组的形式表示。

其中第一个输出

print(max(set(a),key = a.count))

也可以写成:

print(max(set(a),key = lambda x:a.count(x)))

这样其实更便于理解。

关于 max 的用法可以参考这里。

关于 set 的用法可以参考这里

而第二个输出:

print(cnt.most_common())

这里的most_common可以指定参数,假如说传入cnt.most_common(2),那么将返回排前2个的集合,如果不指定参数,默认输出所有。

关于Counter的用法可以参考这里。

返回列表中最小值和最大值的索引

a = [21,34,56,32,2,45]def find_max_value_index(a):return max(range(len(a)),key = a.__getitem__)def find_min_value_index(a):return min(range(len(a)),key = lambda x: a[x])print(find_max_value_index(a))print(find_min_value_index(a))

注意,这里定义了两个函数,分别计算最大值和最小值的索引值。两种写法有些不同,一个是使用了关键字lambda,我个人更倾向于添加lambda关键字的这种,利于理解。

为了更容易理解上面的这种写法, 这里把语句拆解开并打印出来,这样就一目了然了;

print(len(a))print(range(len(a)))print(a.__getitem__(0))

输出:

6range(0, 6)21

检查两个字符串是不是由相同字母不同顺序组合

from collections import Countera = 'awawa211eqsass'b = 'wadqw1'c = 'abcde'd = 'cdabe'print(Counter(a) == Counter(b))print(Counter(c) == Counter(d))

输出:

FalseTrue

反转字符串

a = 'awawa211eqsass'f = a[::-1] print(f) #ssasqe112awawa

也可以使用循环,不过是分行输出

for x in reversed(a):print(x)

如果是要翻转一个很长的数字

aa = 12345678print(int(str(aa)[::-1])) #87654321

反转列表

类似上面的反转字符串

bb = [1,2,3,4,5]print(bb[::-1]) #[5,4,3,2,1]

同样可以通过循环的方式来

for x in reversed(bb):print(x)

移除列表中的重复元素

>>> a = [1,2,3,4,5,3,2,1,7]>>> print(list(set(a)))[1, 2, 3, 4, 5, 7]

还可以导入库中的模块来实现

>>> b = ['aaw','bbb','ccc','aaw']>>> print(list(set(b)))['aaw', 'ccc', 'bbb']>>> from collections import OrderedDict>>> print(list(OrderedDict.fromkeys(b).keys()))['aaw', 'bbb', 'ccc']

合并字典

a = {'a':1}b = {'b':2}#方法一print({**a,**b})#方法二print(dict(a.items() | b.items()))#方法三a.update(b)print(a)

输出结果:

{'a': 1, 'b': 2}{'b': 2, 'a': 1}{'a': 1, 'b': 2}

for else 用法

for x in range(1,5):if x == 0:breakelse:print("did not break out of for loop")

输出:

did not break out of for loop

这个用法的意思就是,当循环结束后但是 for 中的内容还没有执行,就会执行 else 中的内容。

转换列表为逗号分隔符形式

#纯字符串列表a = ['aaa','bbb','ccc']print(','.join(a))#纯数字列表b = [1,2,3,4]print(','.join(map(str,b)))#字符串加数字列表c = [1,2,'aaa',4]print(','.join(map(str,c)))

输出:

aaa,bbb,ccc1,2,3,41,2,aaa,4

字典 get 的方法

a = {'aaa':10,'bbb':20,'ccc':30}print(a.get("ddd",23))

可以传入默认值,如果查询不到 key 的话,就会返回默认值。

通过「键」排序字典元素

a = {'bbb':50,'aaa':20,'ccc':30}print(sorted(a.items(),key=lambda x:x[1]))#------测试-------#print(a.items())print(('bbb', 50)[1])

输出:

[('aaa', 20), ('ccc', 30), ('bbb', 50)]dict_items([('bbb', 50), ('aaa', 20), ('ccc', 30)])50

为了便于理解,这里输出了 items()的值。

a = {'bbb':50,'aaa':20,'ccc':30}#方法一print(sorted(a.items(),key=lambda x:x[1]))#方法二from operator import itemgetterprint(sorted(a.items(),key = itemgetter(1)))print(sorted(a,key=a.get))

输出:

[('aaa', 20), ('ccc', 30), ('bbb', 50)][('aaa', 20), ('ccc', 30), ('bbb', 50)]['aaa', 'ccc', 'bbb']

其中最后一句输出的是排序后的 key 列表。

转置二维数组

org = [['a','b'],['c','d'],['e','f']]tran = zip(*org)print(list(tran))

输出:

[('a', 'c', 'e'), ('b', 'd', 'f')]

链式函数调用

这是一种比较新颖的写法,可以大大的缩短精简代码:

def add(a,b):return a+bdef sub(a,b):return a-bb = Trueprint((add if b else sub)(3,2))

输出为:5

链式比较

a = 5print(1< a < 8)print(1 == a < 20)

输出为:

TrueFalse

列表拷贝的几种方式

直接看示例吧

#仅赋值a = [1,2,3,4]b = ab[0] = 5print(a,b)#深拷贝a = [1,2,3,4]b = a[:]b[0] =10print(a,b)#相当于重新创建一个list空间a = [1,2,3,4]b = list(a)b[0] = 6print(a,b)#使用 list的copy函数,只有 Python3支持a = [1,2,3,4]b = a.copy()b[0] = 8print(a,b)#导入包来实现深拷贝from copy import deepcopyb = [[1,2],[3,4]]c = deepcopy(b)c[0][0] = 5print(b,c)

输出结果:

[5, 2, 3, 4] [5, 2, 3, 4][1, 2, 3, 4] [10, 2, 3, 4][1, 2, 3, 4] [6, 2, 3, 4][1, 2, 3, 4] [8, 2, 3, 4][[1, 2], [3, 4]] [[5, 2], [3, 4]]

可以看到, 第一种方式仅仅是将 list 赋值给另一个对象,并非开辟新的空间,其他几种方式都属于深拷贝。

参考文档:

/a6591753290361340429/?tt_from=android_share&utm_campaign=client_share&timestamp=1535293192&app=news_article&iid=41720269988&utm_medium=toutiao_android&group_id=6591753290361340429

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。