博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python cookbook读书笔记二
阅读量:4224 次
发布时间:2019-05-26

本文共 1908 字,大约阅读时间需要 6 分钟。

    1.slice内置函数

  slice函数用于创建一个切片对象,可以用于任何需要切片的地方,这样就可以避免了硬编码切片,因为切片不统一导致的问题

>>> sli = slice(2, 12, 2)>>> s = '..h.e.l.l.o....'>>> s[sli]'hello'

    2.排序

  Python内置了一个排序函数sorted,可以直接用来对可排序的数据类型进行排序

>>> a = [1, 3, 5, 23, 46, -133.3, 14, 20, 1]>>> sorted(a)[-133.3, 1, 1, 3, 5, 14, 20, 23, 46]

  如果是字典呢,sorted函数提供了一个key参数,用于选择要进行排序的元素,可以使用lambda表达式进行选择

>>> a = [{'id': 1, 'name': 'ali'},... {'id': 2, 'name': 'caven'},... {'id': -2, 'name': 'bit'}]>>> sorted(a, key=lambda x: x['id'])[{'name': 'bit', 'id': -2}, {'name': 'ali', 'id': 1}, {'name': 'caven', 'id': 2}]>>> sorted(a, key=lambda x: x['name'])[{'name': 'ali', 'id': 1}, {'name': 'bit', 'id': -2}, {'name': 'caven', 'id': 2}]
  当然,Python为我们提供了更好的选择,operator中的itemgetter函数

>>> from operator import itemgetter>>> sorted(a, key=itemgetter('id'))[{'name': 'bit', 'id': -2}, {'name': 'ali', 'id': 1}, {'name': 'caven', 'id': 2}]
根据书上的说法,itemgetter效率更高,没有进行比较,有兴趣者可以自行对比。

  如果是类呢,也是类似的,要么用lambda表达式选择要进行比较的类属性,或者使用operator的attegetter函数传入要进行比较的值

from operator import attrgetterclass User:	def __init__(self, id, name):		super(User, self).__init__()		self.id = id		self.name = name	def __repr__(self):		return '<{},{}>'.format(self.id, self.name)a = [User(1, 'ali'), User(2, 'caven'), User(-2, 'bit')]print(sorted(a, key=lambda x: x.id))print(sorted(a, key=attrgetter('name')))
[<-2,bit>, <1,ali>, <2,caven>][<1,ali>, <-2,bit>, <2,caven>]
    3.Unicode标准化

  直接引用书上例子

>>> s1 = 'Spicy Jalape\u00f1o'>>> s2 = 'Spicy Jalapen\u0303o'>>> s1'Spicy Jalapeño'>>> s2'Spicy Jalapeño'>>> s1 == s2False>>> len(s1)14>>> len(s2)15>>>
以上就是Unicode编码造成的问题

解决方法时在比较前将文本进行标准化处理,用到了unicodedata模块

依然引用书上代码

>>> import unicodedata>>> t1 = unicodedata.normalize('NFC', s1)>>> t2 = unicodedata.normalize('NFC', s2)>>> t1 == t2True>>> print(ascii(t1))'Spicy Jalape\xf1o'>>> t3 = unicodedata.normalize('NFD', s1)>>> t4 = unicodedata.normalize('NFD', s2)>>> t3 == t4True>>> print(ascii(t3))'Spicy Jalapen\u0303o'

转载地址:http://wigmi.baihongyu.com/

你可能感兴趣的文章
人工智能需要一个可被证明的理论作为基础 | 哈佛丘成桐
查看>>
入门 | 一文概览深度学习中的激活函数
查看>>
一分钟整明白Tensorflow Extended
查看>>
人工智能再次参加高考:和作家比写作文,AI能打多少分?
查看>>
云创冬日紫金山踏雪游记
查看>>
西安思源学院电子信息工程学院院长张卫钢一行到访
查看>>
邀请函|欢迎参加2019云创大数据实验平台金融类/电子商务类/数学统计类院校各省总代理招募大会!...
查看>>
云创大数据的2018年!
查看>>
全国高校(高职)大数据师资培训班圆满落幕,200多名老师抢先“尝鲜”!
查看>>
【回顾】云创大数据教育事业部成立
查看>>
云创大数据与江苏城市职业学院共建实习实训就业基地!
查看>>
12月,云创大数据发生了哪些大事?
查看>>
贵州电子商务职业技术学院实验中心主任李崑一行到访
查看>>
善行天下,大爱无疆 ——云创再次获赠爱心锦旗!
查看>>
热烈祝贺刘鹏教授膺选第45届世界技能大赛云计算赛事中国赛区裁判长!
查看>>
图解YU12、I420、YV12、NV12、NV21、YUV420P、YUV420SP、YUV422P、YUV444P的区别
查看>>
QNX简介
查看>>
MQTT协议基本介绍
查看>>
进程和线程是操作系统基本概念,了解一下
查看>>
SSL与TLS的区别以及介绍
查看>>