1. 序列类型的分类:

  容器类型:list、tuple,deque

  扁平序列:str、bytes、bytearray、array.array

  可变序列:list、dequte、bytearray、array

  不可变序列:str、tuple、bytes

2. 序列的abc继承关系:

  魔法函数构成了协议

3.序列的+ +=和extend的区别:

my_list = []
my_list.append(1)
my_list.append("a")from collections import abca = [1,2]
# a = list()
c = a + [3,4]
# c = a + (3,4)  # 抛异常
print(c)# 就地加
a += [3,4]
a += (3,4)  # 可以为任意的序列类型
a.extend((3,4))
# def __iadd__(self, values):
#     self.extend(values)
#     return self
a.append((1,2,4))
print(a) 

  记住:我们知道类函数的实现是通过魔法函数来实现的。其中+号表示的是同类项的相加。

  记住:+=和extend是一样的,因此+=是通过__iadd__来实现extend的。

  记住:append表示添加的是元素位置。

  记住:不能用变量名去接收这些方法,因为没有返回值(aa = a.extend是错误的)

4. 实现可切片的对象:

# 模式[start:end:step]
r"""
    其中,第一个数字start表示切片开始位置,默认是0第二个数字end表示切片截止(但不包含)位置(默认为列表长度】第三个数字step表示切片的步长(默认为1)当start为0时可以省略,当end为列表长度时可以省略。当start为1时可以生路,并且省略步长时可以同时省略最后一个冒号。另外,当step为负整数时,表示反向切片,这时start应该比end的值要大才行。
"""
aList = [3,4,5,6,7,9,11,13,15,17]
# 取值的操作
print(aList[::]) #返回包含原里列表中所有元素的新列表
print(aList[::-1]) #返回包含原列表中所有元素的逆序列表
print(aList[::2]) # 隔一个取一个,获取偶数位置的元素
print(aList[1::2]) #隔一个取一个,获取奇数位置的元素
print(aList[3:6]) # 指定切片的开始和结束位置
print(aList[0:100]) # 切片结束位置大于列表长度时,从里诶包尾部截断
print(aList[100:]) # 切片开始位置大于列表长度时,返回空列表# 赋值的操作
aList[len(aList):] = [9]
print(aList) # 在列表尾部增加元素
aList[:0] = [1,2]
print(aList) # 在列表头部插入元素
aList[3:3] = [4]
print(aList) # 在列表中间位置插入元素
aList[:3] = [1,2]
print(aList) #替换元素列表元素,等号两边的里诶包长度相同
aList[3:] = [4,5,6]
print(aList) # 等号两边的列表长度也可以不相等
aList[::2] = [0] * 3  # 将元素赋值三份
print(aList) # 隔一个修改一个
aList[::2] = ['a','b','c'] # 隔一个修改一个
print(aList)
# aList[::2] = [1,2] # 左侧切片不连续,等号两边列表长度必须相等
aList[:3] = [] #删除列表中前3个元素
del aList[:3] # 切片元素连续
del aList[::3] # 切片元素不连续,隔一个删一个。
print(aList)

import numbers
class Group:# 支持切片操作def __init__(self,group_name,company_name,staffs):self.group_name = group_nameself.company_name = company_nameself.staffs = staffsdef __reversed__(self):self.staffs.reverse()def __getitem__(self, item):cls = type(self)if isinstance(item,slice):return cls(group_name=self.group_name,company_name=self.company_name,staffs=self.staffs[item])elif isinstance(item,numbers.Integral):return cls(group_name=self.group_name,company_name=self.company_name,staffs=[self.staffs[item]])def __len__(self):return len(self.staffs)def __iter__(self):return iter(self.staffs)def __contains__(self, item):if item in self.staffs:return Trueelse:return Falsestaffs = ["bobby1","imooc","bobby2","bobby3"]
group = Group(company_name="imooc",group_name="user",staffs=staffs)
sub_group = group[:2]
print(group.staffs)
# sub_group1 = group[0]
# print(group.staffs)
# reversed(group)
# for user in group:
#     print(user)

  记住:这是一个比较多的用魔法函数实现切片操作。

  记住:难理解的是cls = type(self),返回值:<class '__main__.Group'>,这是拿到类的对象 ,其实可以改写成下面方式

    def __getitem__(self, item):# cls = type(self)# print(type(self))if isinstance(item,slice):return Group(group_name=self.group_name,company_name=self.company_name,staffs=self.staffs[item])elif isinstance(item,numbers.Integral):return Group(group_name=self.group_name,company_name=self.company_name,staffs=[self.staffs[item]])

  记住:但是这里为什么要用type返回类对象呢?这是一种相对方式,为的是如果更改类名可以不用修改内部的代码。

5. bisect二分迭代类型操作:

import bisect
from collections import deque# 用来处理已排序的序列,始终用来维持已排序的序列,升序。
# 二分查找
inter_list = []
bisect.insort(inter_list,3)
bisect.insort(inter_list,2)
bisect.insort(inter_list,5)
bisect.insort(inter_list,1)
bisect.insort(inter_list,6)print(inter_list)
# 总结:
# bisect.bisect(data,1)
# 作用,查找该数值将会插入的位置并返回,而不会插入,返回是会在那个数字之后插入
# 表示:num > .... 插入
a1 = bisect.bisect(inter_list,4)
print(a1)# bisect_left 和 bisect_right 函数
# 该函数用入处理将会插入重复数值的情况,返回将会插入的位置
# 第一:从左边看num>...插入位置
# 第二:从右边看 ... < num 出入位置。
a2 = bisect.bisect_left(inter_list,2)
print(a2)
a3 = bisect.bisect_right(inter_list,2)
print(a3)# insort  函数 insort_left  和 insort_right
bisect.insort(inter_list,2)
print(inter_list)

7.数组:

# array, deque
# 数组:存储连续的内存空间,效率非常高的。
import array
# array 和list的一个重要区别,array只能存放指定的数据类型。
# array的性能比list高。my_array = array.array("i")
my_array.append(1)
my_array.append("abc")
print(my_array)

  记住:我们是会用 列表,什么时候用数组

8. 列表推导式、生成器表达式、字典推导式、集合推导式。

# 列表生成式(列表推导式)
# 1. 提取1-20之间的奇数
odd_list = []
for i in range(21):if i %2 ==1:odd_list.append(i)print(odd_list)# 列表生成式
odd_list = [i for i in range(21) if i %2 == 1 ]# 2.逻辑复杂的情况
def handle_item(item):return item * itemodd_list1 = [handle_item(i) for i in range(21) if i %2 == 1 ]# 列表生成式性能高于列表操作。

  记住:列表生成式不能太复杂了。要不就放弃了可读性。另外列表生成式的操作高于列表操作。

# 生成器表达式:
odd_list = (i for i in range(21) if i %2 == 1 )
print(type(odd_list))
# <class 'generator'>
for item in odd_list:print(item)

  记住:生成器通过for循环打印出来。

odd_gen = (i for i in range(21) if i %2 == 1 )odd_list = list(odd_gen)
print(odd_list)

  记住:生成器可以转回成list再打印出来也是可以的。

# 字典推导式
my_dict = {"bobby1":22,"bobby2":23,"imooc":5}
reversed_dict = {value:Key for Key,value in my_dict.items()}
print(reversed_dict)
# {22: 'bobby1', 23: 'bobby2', 5: 'imooc'}

# 集合推导式
# my_set = set(my_dict.keys())
my_set = {Key for Key,value in my_dict.items()}
print(my_set)
print(type(my_set))
# <class 'set'>

转载于:https://www.cnblogs.com/noah0532/p/10988997.html

Python说文解字_杂谈06相关推荐

  1. 全字库说文解字字体_整理了10款免费商用中文字体,超好用

    文章来源:logo设计视觉(ID:logoshijue) 字体不能随便用!大家应该经常有听到字体侵权索赔上几十上百万事吧!作为小小的设计师遇上了就倒霉啦!所以,我们要有足够版权意识,没事囤点免费可商用 ...

  2. 全字库说文解字字体_【180期】可商用字体大全,无版权纠纷!

    大家好我是万能的向前 今天向前为你精选了 可商用字体最全收集免费,无版权纠纷 每个设计高手都离不开百变的字体,但是,如果审美不到位字库不全,找不到合适的字体,领导.客户就相不中!那就有可能被降薪,糟心 ...

  3. java 词根_英语词根与单词的说文解字---词根示例1、第10页 st(at)

    英语词根与单词的说文解字---词根示例1.第10页 st(at) 一.总结 一句话总结: 站 state,establish,constitution 英 [ɪ'stæblɪʃ; e-]  美 [ɪˈ ...

  4. 说文解字 —— 拆字

    1. 说文解字 美: 羊大为美:所以有肥美嘛 2. 世说新语 皇: 王上加白: 工人: 工人就是天: 3. 复杂词语 三星期,六点钟:三星期为二十一,六点钟为酉时的酉:加在一起就是醋: 4. 数字 7 ...

  5. 嘻嘻哈哈说文解字(讲)

    讲的左边是言,右边是井,我想,老祖宗造这个字的意思应该是:话是应该说,但不能说多,不能井边说,言空了就掉井里了(所谓言虚容易掉到井里面).但奈何我们的记忆总不好,只记住了左边的言,这不,你看我们天天都 ...

  6. 读书笔记(四)---读《说文解字》的快乐点滴

    想读这本书的缘由在于,我经常背英语单词:为了更牢靠的记住英语单词,使用了某些例如按词根记住单词的技巧,突然想到自己对汉字也有很多是不认识的,学习一门外语花了这么大力气,为何学习母语反而不下工夫呢?于是 ...

  7. 曲刚英语说文解字全套下载

    买了曲刚英语说文解字全套已经学完了,因为都是电子录像,所以想转让一下,有兴趣的可以联系我,已经解决其他机器上无法播放的问题? 联系方式q.q:375501819 下载地址可以联系我~

  8. 快步英语说文解字颠覆中国传统英语教学模式

    原文出处 http://tinyurl.com/43637676 快步7号说文解字里面内容到底教了那些呢 中国近百年来沉闷压抑僵死的英语教学困境终于迎来颠覆性.震撼性突破,横空出世的曲刚英语语音大表. ...

  9. 《说文解字》与程序设计

    说文解字 领券网 https://www.cps3.cn/ <说文解字>,简称<说文>,是由东汉经学家.文字学家许慎编著的语文工具书著作.<说文解字>是中国最早的系 ...

最新文章

  1. python 设计模式 观察者_python设计模式之观察者模式
  2. IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表
  3. pb65 xp 安装无反应_长春优质AFB型耐腐蚀泵安装
  4. ibatis mysql 自增_mybatis自增主键
  5. [html] 如果要开发一个在超级大屏上显示的可视化页面,你首先要考虑什么?
  6. 样本不均衡、长尾分布问题的方法整理(文献+代码)
  7. 樊登读书分享ppt_樊登读书精华分享-《分手后,成为更好的自己》
  8. 【正则表达式】正则表达式匹配SQL中的函数名
  9. mfc远程连接mysql数据库连接_MFC连接mysql数据库(十分钟搞定)
  10. linux命令地址,[命令] Linux IP 命令 IP(管理地址)
  11. 2048游戏简单实现
  12. 考研一战失利反思与二战的规划
  13. 【keil/MDK5】编译生成bin文件和汇编文件
  14. ACD是计算机的应用之一,ACDSee
  15. Android Studio 2.2 正式稳定版已发布,先睹为快!
  16. linux使用ftp传递文件,在linux下使用FTP命令传输文件
  17. Oracle创建用户后无法登录,报错ORA-01045: user lacks CREATE SESSION privilege
  18. mpu9250摘抄笔记及心得
  19. 麦子学院IT资源,web前端,UI设计,Java全套,IOS,android,产品经理,pyhton,网络安全,运维
  20. 手机/笔记本电脑看电视直播

热门文章

  1. 简化软件产品的实际步骤
  2. Android EditText.setError() - 会弹出一个popupwindow,效果很好
  3. Java Web学习(四)http协议
  4. 抓捕盗窃犯(并查集)
  5. 【8086汇编-Day6】关于loop的实验
  6. 初学redux笔记,及一个最简单的redux实例
  7. 非常不错的MySQL优化的8条经验
  8. UVa OJ 120
  9. 关于自适应宽度圆角的最简单的解决办法
  10. 我们的故事(八)-----仲夏夜之梦