Android类加载ClassLoader
来源:互联网 发布:阿里云虚拟机价 价格 编辑:程序博客网 时间:2024/06/05 22:38
本文和大家分享的主要是python开发中内建常量Ellipsis相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助。
version Python3.5.3
查阅 Python 文档时发现了这么一个常量 Ellipsis
文档中表述如下
EllipsisThe same as ... . Special value used mostly in conjunction with extended slicing syntax for user-defined container data types.
In [25]: ... is EllipsisOut[25]: True
有了这个常量,我们便可以定义一些有趣的东西,比如一个和 Haskell 中类似的 list
λ [1, 2]
[1,2]
:: Num t => [t]
λ [1..10]
[1,2,3,4,5,6,7,8,9,10]
:: (Enum t, Num t) => [t]
λ [1, 4 .. 10]
[1,4,7,10]
:: (Enum t, Num t) => [t]
为此我们先来看看 Python 中的序列协议 __getitem__
In [1]: class Seq(object):
...: def __getitem__(self, key):
...: return key
...:
In [2]: seq = Seq()
In [3]: seq[1, 2, 3, 4, 5]
Out[3]: (1, 2, 3, 4, 5)
In [4]: seq[1:2]
Out[4]: slice(1, 2, None)
In [5]: seq[1:10:2]
Out[5]: slice(1, 10, 2)
In [6]: seq[3, 1:10:2]
Out[6]: (3, slice(1, 10, 2))
我们可以看出,传入的是一个 tuple 类型,如果有切片操作的话,则对应一个 slice 对象
知道这点便好办了,至于无穷 list 我们可以使用 generator 来解决
class InfiniteSeq(object):
def __getitem__(self, items):
if isinstance(items, tuple):
index = 0
while index < len(items):
if items[index] is Ellipsis:
end = items[index+1] if index+1 < len(items) else float('INF')
if index > 1:
step = items[index-1] - items[index-2]
else:
step = 1 if end > items[index-1] else -1
value = items[index-1] + step
while (step > 0 and value <= end) or (step < 0 and value >= end):
yield value
value = value + step
index = index + 1
else:
yield items[index]
index = index + 1
else:
raise SyntaxError
测试结果
In [109]: seq = InfiniteSeq()
In [110]: list(seq[1, 2, 3, 4, 5])
Out[110]: [1, 2, 3, 4, 5]
In [111]: list(seq[1, ..., 5])
Out[111]: [1, 2, 3, 4, 5]
In [112]: list(seq[1, 3, ..., 7])
Out[112]: [1, 3, 5, 7]
In [113]: list(seq[1, 3, ..., 8])
Out[113]: [1, 3, 5, 7]
In [114]: list(seq[1, 3, ..., 9])
Out[114]: [1, 3, 5, 7, 9]
In [115]: list(seq[10, 1, 3, ..., 9, 12])
Out[115]: [10, 1, 3, 5, 7, 9, 12]
In [116]: list(seq[10, ..., 1])
Out[116]: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
In [117]: list(seq[10, 8, ..., 0])
Out[117]: [10, 8, 6, 4, 2, 0]
In [118]: for i in seq[1, ...]:
...: print(i)
...: if i > 5:
...: break
...: 123456
来源:Hanaasagi
0 0
- Android类加载ClassLoader
- Android使用ClassLoader加载类
- android类加载器ClassLoader
- ClassLoader 三 Android 类加载
- android基础之ClassLoader类加载器
- Android动态加载ClassLoader
- Android之ClassLoader类加载器(MultiDex、动态加载dex)
- Classloader类加载器
- classloader加载类原理
- 类加载器ClassLoader
- ClassLoader类加载器
- ClassLoader 类加载器
- classLoader 类加载器
- ClassLoader(类加载器)
- 类加载器(ClassLoader)
- ClassLoader类加载器
- 类加载器Classloader
- 使用ClassLoader加载类
- 两个类型为字符串的二进制数的加法
- 图像处理相关模块配置
- /etc/profile 修改致命令失效
- 后台产品经理,需要重视这4个能力
- 搜索练习13/poj/problem1426 Find The Multiple/bfs
- Android类加载ClassLoader
- CUDA程序阻塞
- 操作系统轮转调度算法(c语言描述)
- 配置SQL Server的身份验证方式
- Android学习之自定义View详解
- 基于 Django1.10 文档的深入学习(26)—— Creating forms from models 之 基础
- 常用统计指标
- 判断互质的五种方法
- OpenCV 利用getTickCount()与getTickFrequency()计算执行时间