PythonML
purpose:学习Python语言的高阶应用
条件语句
import math
x=5
if x>0:
y=math.log(10)
else:
y=float('nan')
import math
x=5
y=math.log(10) if x >0 else float('nan')
列表推导式
%%timeit
l=[]
for i in range(1000):
if i%2==0:
l.append(i)
85.4 µs ± 3.34 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
%%timeit
l=[i for i in range(1000) if i%2=0]
69.1 µs ± 3.92 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
深度拷贝与浅拷贝
a={1:[1,2,3]}
print('变量a的内存地址',id(a))
print('变量a中列表的地址',id(a[1]))
变量a的内存地址 140257407243824
变量a中列表的地址 140257407149448
赋值
b=a
print('变量b的内存地址',id(b))
print('变量b中列表的地址',id(b[1]))
变量b的内存地址 140257407243824
变量b中列表的地址 140257407149448
浅拷贝
c=a.copy()
print('变量c的内存地址',id(c))
print('变量c中列表的地址',id(c[1]))
变量c的内存地址 140257407243968
变量c中列表的地址 140257407149448
深度拷贝
import copy
d=copy.deepcopy(a)
print('变量d的内存地址',id(d))
print('变量d中列表的地址',id(d[1]))
变量d的内存地址 140257407244112
变量d中列表的地址 140257470077640
map函数
print('获取两个列表位置上最小值:')
l1=[1,3,5,20,8]
l2=[2,6,4,10,9]
minl=map(min,l1,l2)
print(list(minl))
获取两个列表位置上最小值:
[1, 3, 4, 10, 8]
lambda 匿名函数
print('返回对应位置x*2+y:')
l1=[1,3,5,20,8]
l2=[2,6,4,10,9]
res=map(lambda x,y:x*2+y,l1,l2)
print(list(res))
返回对应位置x*2+y:
[4, 12, 14, 50, 25]
自定义排序
普通排序
a=[5,3,2,10,6]
print(sorted(a))
[2, 3, 5, 6, 10]
字符串排序 大小写敏感
strs=['ccx','aay','Dz','Bm']
print(sorted(strs))
print(sorted(strs,reverse=True))
['Bm', 'Dz', 'aay', 'ccx']
['ccx', 'aay', 'Dz', 'Bm']
字符串长度排序
print(sorted(strs,key=len))
['Dz', 'Bm', 'ccx', 'aay']
字符串忽略大小写
print(sorted(strs,key=str.lower))
['aay', 'Bm', 'ccx', 'Dz']
字符串按照最后一个字符排序
print(sorted(strs,key=lambda x:x[-1]))
['Bm', 'ccx', 'aay', 'Dz']
列表中元组的排序
tuple_list=[('ETH',194.78),('BTC',6292.56),('EOS',4.99)]
print(sorted(tuple_list,key=lambda item:item[1]))
[('EOS', 4.99), ('ETH', 194.78), ('BTC', 6292.56)]
字典列表排序
dit_list=[{'name':'ETC','price':194.78},
{'name':'BTC','price':6292.56},
{'name':'EOS','price':4.99}]
print(sorted(dit_list))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-24-c83db14ad4bb> in <module>
3 {'name':'BTC','price':6292.56},
4 {'name':'EOS','price':4.99}]
----> 5 print(sorted(dit_list))
TypeError: '<' not supported between instances of 'dict' and 'dict'
from operator import itemgetter
print(sorted(dit_list,key=itemgetter('name')))
[{'name': 'BTC', 'price': 6292.56}, {'name': 'EOS', 'price': 4.99}, {'name': 'ETC', 'price': 194.78}]
from operator import itemgetter
print(sorted(dit_list,key=itemgetter('price')))
[{'name': 'EOS', 'price': 4.99}, {'name': 'ETC', 'price': 194.78}, {'name': 'BTC', 'price': 6292.56}]