lect01_codes_高阶语法

这篇博客主要探讨了Python语言的高阶特性在机器学习中的运用,包括条件语句、列表推导式、深浅拷贝的区分与使用、map函数、lambda匿名函数以及自定义排序的各种场景,如字符串、元组和字典列表的排序策略。
摘要由CSDN通过智能技术生成

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]

字符串排序 大小写敏感

#整体先按照大小写排序 再按照ASCII码值排序 
#reverse设置逆序
strs=['ccx','aay','Dz','Bm']
print(sorted(strs))
print(sorted(strs,reverse=True))
['Bm', 'Dz', 'aay', 'ccx']
['ccx', 'aay', 'Dz', 'Bm']

字符串长度排序

#key=function
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)]

字典列表排序

#dict不支持比较
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'
#按照name排序
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}]
#按照price排序
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}]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值