python基础-内置函数2

来源:互联网 发布:淘宝女舞蹈裤 编辑:程序博客网 时间:2024/06/05 16:07

        • reversedreverse
        • slice
        • decodeencoding
        • bytearraybytes
        • memoryview
        • ordchrasciirepr
        • enumerate
        • allany
        • zip
        • filter
        • map
        • sorted

reversed\reverse

l = [3,4,2,5,7,1,5]       #ret = reversed(l)print(ret)print(list(ret))print(l)l.reverse()print(l)print(list(reversed("safly")))print(list(reversed([1,3,5])))print(list(reversed((1,3,5))))#字典不能reversed# print(list(reversed({"a":1,"b":3})))

输出如下:

<list_reverseiterator object at 0x00B22170>[5, 1, 7, 5, 2, 4, 3][3, 4, 2, 5, 7, 1, 5][5, 1, 7, 5, 2, 4, 3]['y', 'l', 'f', 'a', 's'][5, 3, 1][5, 3, 1]

如下是不可行的

s = "safly" s.reverse() s = (1,2) s.reverse()

错误如下:

Traceback (most recent call last):4  File "E:/python/py_pro/3.匿名函数.py", line 45, in <module>    s.reverse()FalseAttributeError: 'str' object has no attribute 'reverse

因为是不可变类型的

slice

l = (1,2,23,213,5612,342,43)sli = slice(0,5,2)   #实现了切片的函数print(l[sli])

输出如下:

(1, 23, 5612)

decode\encoding

#网络编程的时候:能在网络上传递的必须是字节print("---------")s = "s".encode("utf-8")print(s)print(s.decode(encoding="utf-8"))print("---------")s = "我的".encode("utf-8")print(s)print(s.decode(encoding="utf-8"))

输出如下:

E:\python\python_sdk\python.exe E:/python/py_pro/2.内置函数.py---------b's's---------b'\xe6\x88\x91\xe7\x9a\x84'我的Process finished with exit code 0

bytearray\bytes

ret = bytes('你好',encoding='utf-8')print(ret)print(ret.decode(encoding='utf-8'))print("----------")ret = bytearray('alex',encoding='utf-8')  #对比较长的字符串做修改的时候,指定某一处进行修改,不会改变这个bytearry的内存地址print(ret.decode(encoding="utf-8"))print("改变前id:",id(ret))print(ret[0])ret[0] = 65print(ret)print("改变后id:",id(ret))

输出如下:

E:\python\python_sdk\python.exe E:/python/py_pro/2.内置函数.pyb'\xe4\xbd\xa0\xe5\xa5\xbd'你好----------alex改变前id: 656307297bytearray(b'Alex')改变后id: 6563072Process finished with exit code 0

memoryview

memoryview() 函数返回给定参数的内存查看对象(Momory view)。

ret = memoryview(bytes('你好',encoding='utf-8'))print(len(ret))print(bytes(ret[:3]).decode('utf-8'))print(bytes(ret[3:]).decode('utf-8'))

输出如下:

6你好

ord\chr\ascii\repr

print(ord('a'))print(chr(97))print(ascii(97))print(repr(1))print(repr('1'))print('name : %r'%('金老板'))print(repr("safly"))print(repr([1,2]))print(repr(1))print(repr((1,2)))print(repr({"a":1}))

输出如下:

E:\python\python_sdk\python.exe E:/python/py_pro/2.内置函数.py97a971'1'name : '金老板''safly'[1, 2]1(1, 2){'a': 1}Process finished with exit code 0

enumerate

l = ["afly",1,3,4]for i in enumerate(l):    print(i)for i in enumerate(l,1):    print(i[0],i[1])for i,j in enumerate(l,1):    print(i,j)

输出如下:

E:\python\python_sdk\python.exe E:/python/py_pro/python.py(0, 'afly')(1, 1)(2, 3)(3, 4)1 afly2 13 34 41 afly2 13 34 4Process finished with exit code 0

all、any

print(all([1,2,3,4,0]))print(all([1,2,3,4]))print(all([1,2,3,None]))print(all([1,2,3,'']))print(any([True,None,False]))print(any([False,None,False]))

输出如下:

FalseTrueFalseFalseTrueFalse

zip

#拉链函数zip argument #1 must support iteration#列表print(list(zip([0,1,2,3,4],[5,6,7,8],['a','b'])))#元组print(list(zip((1,2,3),(2,5))))#字典print(list(zip({"a":1},{"b":2})))#混合元组+列表print(list(zip((1,0),[2,0])))#混合元组+列表print(list(zip((1,0),[2])))#混合元组+字典print(list(zip((1,0),{"a":1})))#混合列表+字典print(list(zip([1,0],{"a":1})))print(list(zip((1,0),(2,))))#以下2种错误# print(list(zip(1,2)))# print(list(zip((1,0),(2))))s = (2)print(type(s))

输出如下:

E:\python\python_sdk\python.exe E:/python/py_pro/2.内置函数.py[(0, 5, 'a'), (1, 6, 'b')][(1, 2), (2, 5)][('a', 'b')][(1, 2), (0, 0)][(1, 2)][(1, 'a')][(1, 'a')][(1, 2)]<class 'int'>Process finished with exit code 0

filter

#过滤函数def is_odd(x):    if x>10:        return Trueret = filter(is_odd, [1, 4, 6, 7, 9, 12, 17])print(list(ret))li = ["tss",None,""," ","en"]def method(s):    return s and s.strip()ret = filter(method,li)print(list(ret))print(li)

输出如下:

E:\python\python_sdk\python.exe E:/python/py_pro/2.内置函数.py[12, 17]['tss', 'en']['tss', None, '', ' ', 'en']Process finished with exit code 0

map

filter和map
参数很相近:都是一个函数名+可迭代对象
且返回值页很相近:都是返回可迭代对象
区别
filter是做筛选的,结果还是原来就在可迭代对象中的项
map是对可迭代对象中的每一项做操作的,结果不一定是原来就在可迭代对象中的项

ret = map(abs,[-1,-5,6,-7])   #abs(-1) = 1   abs(-5) = 5print(list(ret))l = [1,2,3,4,5,6,7,8]def func(x):    return x*xret = map(func,l)print(list(ret))print(l)

输出如下:

E:\python\python_sdk\python.exe E:/python/py_pro/2.内置函数.py[1, 5, 6, 7][1, 4, 9, 16, 25, 36, 49, 64][1, 2, 3, 4, 5, 6, 7, 8]Process finished with exit code 0

sorted

字典、字符串、元组、集合都不能调用sort方法(类似的reverse也是)#sort 是直接修改原列表的顺序,节省内存#sorted 是生成一个新列表,不改变原来的列表print(sorted('123456'))print(sorted((2,4,-1)))print(sorted([-3,6,-7,0,9]))print(sorted({1:'q',3:'c',2:'g'}))print(sorted({1: 'q', 3: 'c', 2: 'g'}.keys()))print(sorted({1:'q',3:'c',2:'g'}.values()))print(sorted({1:'q',3:'c',2:'g'}.items()))#TypeError: 'int' object is not iterable# print(sorted(12,3))print("------默认小到大,反转后大到小--------")print(sorted([-5,3,-4,2,-1],reverse=True))print("------绝对值从小到大排列--------")print(sorted([-5,3,-4,2,-1],key=abs))print("-------排序前调用方法-----")def method(s):    return s + 1print(sorted([9,3],key=method))l2 = ['ajkhs',(1,2),'a',[1,2,3,4]]print(sorted(l2,key=len,reverse=True))s = ["A","B","CS"]def com_flag(s):    return s.lower()print(sorted(s,key=com_flag))#print(sorted(['bob','about','Zoo','Credit'],key = str.lower))

输出如下:

E:\python\python_sdk\python.exe E:/python/py_pro/2.内置函数.py['1', '2', '3', '4', '5', '6'][-1, 2, 4][-7, -3, 0, 6, 9][1, 2, 3][1, 2, 3]['c', 'g', 'q'][(1, 'q'), (2, 'g'), (3, 'c')]------默认小到大,反转后大到小--------[3, 2, -1, -4, -5]------绝对值从小到大排列--------[-1, 2, 3, -4, -5]-------排序前调用方法-----[3, 9]['ajkhs', [1, 2, 3, 4], (1, 2), 'a']['A', 'B', 'CS']['about', 'bob', 'Credit', 'Zoo']Process finished with exit code 0