返回对象(字符、列表、元祖等)的长度或项目个数。
>>>str = "runoob" >>> len(str) # 字符串长度 6 >>> l = [1,2,3,4,5] >>> len(l) # 列表元素个数 5
用于将一个范围在range(256)
内的整数(也即是 0~255)转换成对应的ASCII码字符。
>>> print chr(0x30) # 十六进制 0 >>> print chr(1) # 十进制数,ASCII码1表示start of heading,什么也不输出 >>> chr(1) '\x01'
与此相对应的有一个函数 ord()
,则是返回单个ASCII字符对应的ASCII值或Unicode值。
>>> ord('d') 100 >>> ord('A') 65
xrange()
函数用法与range()
完全相同,所不同的是 xrange() 生成的不是一个数组,而是一个生成器。使用方法如下:
1 xrange(stop) 2 xrange(start, stop[, step])
参数说明:
xrange(5)
等价于xrange(0, 5)
。xrange(0, 5)
是[0, 1, 2, 3, 4]
没有5。xrange(0, 5)
等价于xrange(0, 5, 1)
。range() 方法返回的是一个list对象,它需要开辟专门的空间保存序列中所有的元素。
xrange() 方法返回的是xrange对象,它是一个序列对象,但并不保存序列中的元素。
根据python官方文档的定义,一个序列对象不必要保存所有的元素。
如果只对序列进行读操作,xrange()方法效率较高;但如果要改变序列的元素,或者需要对序列增删元素,那么只能通过range()方法生成一个list对象。
如果你有两个想做的操作,你想要这两个操作成对执行,中间插入一段其他的代码,那么使用 with 就是一种很方便的方法。
最经典的例子就是打开一个文件,对文件进行操作然后关闭文件。
1 with open('output.txt', 'w') as f: 2 f.write('Hi there!')
上面的with语句会在嵌入的程序运行完后自动关闭文件。好处就是无论嵌套模块如何退出,都可以保证文件被关闭。
如果嵌套模块结束之前有异常发生,系统将在异常被外部异常处理程序捕获之前关闭该文件。
如果嵌套模块中包含有return
语句、continue
语句或者break
语句,with
语句一样可以在跳转之前自动关闭文件。
相对于def
定义的函数而言,lambda
表达式则简单很多,因为其主体是一个表达式而非代码块,
并允许在代码内嵌入一个函数定义,不过一般只能封装有限的逻辑。
如下面的例子所示,lambda表达式定义了一个匿名函数,用于筛选100以内3的倍数,并生成一个列表。
list (filter(lambda x:True if x % 3 == 0 else False, range(100)))
当然lambda表达式也可以嵌套在函数体内,使用的时候可以用一个变量来接收,如下:
1 def make_repeat(n): 2 return lambda s : s * n 3 4 double = make_repeat(2) # double变量此处是一个函数 5 print (double(8)) # 使用double向lambda表达式里的s传一个参数,并得到表达式的结果
在Python 2.x 时可以使用内置函数 has_key(),Python 3.x 以后不再支持该函数,被__contains(‘keyname’)所替代。
推荐使用如下的 in 方法
~ $ python3 >>> d = {'name':{},'age':{},'sex':{}} >>> print name in d.keys() True
clear()方法
#!/usr/bin/python # -*- coding: UTF-8 -*- dict = {'name': 'blogsite', 'alexa': 10000, 'url': 'http://blog.csdn.net/'} dict.clear()
pop()方法
#!/usr/bin/python # -*- coding: UTF-8 -*- site= {'name': 'blogsite', 'alexa': 10000, 'url':'http://blog.csdn.net/uuihoo/'} pop_obj=site.pop('name') # 删除要删除的键值对,如{'name':'blogsite'} print pop_obj # blogsite
如果要为 dict 添加键值对,只需为不存在的 key 赋值即可。实现此操作的语法格式如下:
dict[key] = value
可以使用内置函数 len() 来计算字典元素个数,即键的总数。
items()
函数将返回键值对列表,keys()
函数将返回键列表,values()
函数将返回一个值列表。
(a) 遍历所有键值对
dict = {0:'a', 1:'b', 2:'c', 3:'d'} for key,value in dict.items(): print("\nKey:" + key) print("Value:" + str(value))
(b) 遍历所有键
dict = {0:'a', 1:'b', 2:'c', 3:'d'} for key,value in dict.keys(): print(key)
其实还有一种更简便的写法,可以把 keys() 方法省略。
因为遍历字典时,如果你在 for 后面仅声明一个变量,Python会默认遍历所有的键并依次将键赋值给这个变量。
dict = {0:'a', 1:'b', 2:'c', 3:'d'} for key,value in dict: print(key)
(c) 遍历所有值
dict = {0:'a', 1:'b', 2:'c', 3:'d'} for key,value in dict.values(): print("Value:" + str(value))
合并字典有两种方法,一种是使用 update()
函数,还有一种是利用 **
的用法自定义合并。
(a) 使用 update() 方法
使用内置函数,将新的字典合并到当前字典中。函数参数为希望添加到指定字典dict里的字典。该方法没有任何返回值。
合并过程可能出现以下两种情况:
(1)有相同的键时:会使用最新的字典中该键对应的值做为最终结果。
(2)有新的键时:会直接把字典中的键值对加入到当前字典中。
dict_1 = {'Id001': 1, 'Id002': 2} dict_2 = {'Id001': 0, 'Id003': 3, 'Id004': 4} dict_2.update(dict_1) print(dict_2)
输出结果如下:{'Id001': 1, 'Id003': 3, 'Id004': 4, 'Id002': 2}
(b) 使用 **,函数将参数以字典的形式导入
def Merge(src_dict_1, src_dict_2): dst_dict = {**src_dict_1, **src_dict_2} return dst_dict dict_1 = {'Id001': 1, 'Id002': 2} dict_2 = {'Id003': 3, 'Id004': 4} dict_3 = Merge(dict_1, dict_2) print(dict3)
输出结果如下:{'Id001': 1, 'Id002': 2, 'Id003': 3, 'Id004': 4}
可以使用 in 方法,也可以使用内置函数 index()。
num = [1,2,3,4,5] a = 3 if a in num: print("a=%d is in list num" % a) b_idx = num.index(a) print("The index of a=%d in the list is %d" % (a, b_idx))
函数原型
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
对应参数含义如下
根据函数定义,默认情况下是每个print打印完成后自动换行的。
如果输出时不想换行,只需要给参数 end 赋值为空。
print (123,end='') print (456,end='') # 输出结果如下 123456
需要先安装相关的库文件
pip3 install opencv-contrib-python
如果下载速度太慢可以更换下载源,使用如下命令
pip3 install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple
(全文完)
[1] PYTHON中XRANGE和RANGE https://www.cnblogs.com/shixisheng/p/7089930.html
[2] python lambda表达式 https://www.cnblogs.com/jydeng/p/4145188.html