推推导式和内置函数

列表推导式:

[ 变量(加工后的变量) for  变量i  in 可迭代的数据类型 ]

l1 = [i for i in range(1,11)]
print(l1)
#输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#例一:30以内所有能被3整除的数
l3 = [i for i in range(31) if i % 3 == 0]
print(l3)
#输出:[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
------------------------------------------------------------
#例二:30以内所有能被3整除的数的平方
l4 = [i**2 for i in range(31) if i % 3 == 0]
print(l4)
#输出:[0, 9, 36, 81, 144, 225, 324, 441, 576, 729, 900]

集合推导式,自带去重功能:

squared = {x**2 for x in [1, -1, 2]}
print(squared)
#输出:{1, 4}    由于在集合里,所以重复自动去掉

字典推导式:

#例一:将一个字典的key和value对调
mcase = {'a': 10, 'b': 34}
mcase_frequency = {mcase[k]: k for k in mcase}
print(mcase_frequency)
#输出:{10: 'a', 34: 'b'}

列表套列表推导式:

#打印含有两个e的名字
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
         ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]

name_l1 = [name for i in names for name in i if name.count('e') == 2]
print(name_l1)
#输出:['Jefferson', 'Wesley', 'Steven', 'Jennifer']

把列表解析的[]换成()得到的就是生成器表达式:

l1 = (i for i in range(1,11))
print(l1)
print(l1.__next__())
print(l1.__next__())
#输出:    <generator object <genexpr> at 0x0000002FF33BBE60>
#         1
#       2

内置函数:

共有68个

print:

print('666',end='')
print('666')
print(1,2,3,4,5,sep='|')
'''输出:
666666
1|2|3|4|5
print自带换行\n   end =""  为空,不换行
sep 连接符
'''

dir:

 dir() 查找对象的所有方法
print(dir([]))
#打印:['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', ...]

locals() :将局部的变量储存起来
globals(): 将全局的变量,函数名,等等 储存起来.

ef func():
    name = 'alex'
    print(locals())
    print(globals())
func()
#输出:{'name': 'alex'}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozenBF28>, '__spec__': None, '__annotat 。。。。。。

help(str): 将你查询的对象所有信息都拿出来.

abs():  绝对值

print(abs(-1))
#输出:1

max(),min():

def func(ret):
    print(44)
# 最大值
ret = max(1,2,-3,key=abs)  #key = abs  代表所有数字的绝对值
print(ret)
#最小值
ret = min([1,2,3])
print(ret)
#输出:-3   1

sum(): 求和

#sum iterable,初始值
ret = sum([1,2,3],10)
print(ret)
#输出:16
callable() 判断此变量是不是函数名:
name = 'alex'
print(callable(name))
def func():
    print(666)
print(callable(func))
#输出: False
#      True

hash(): 通过哈希表的规则,将对象转换成哈希值

all(): 可迭代对象里面的所有的值转化成bool值如果都是True则,返回True

print(all([1,2,3,0]))
print(all([1,2,3]))
#输出:False    True

进制转换:

#十进制转化成二进制
print(bin(100))
# #将十进制转化成八进制
print(oct(9))
# #将十进制转化成十六进制
print(hex(33))
'''
输出
0b1100100
0o11
0x21
'''
float  :有限小数,无线循环小数,不包含(无线不循环小数)
print(1.35432,type(1.35432))
print(float(3))
#输出:1.35432 <class 'float'>
#     3.0
divmod() 分页:
print(divmod(7,2)) #(商,余数)
#输出:(3, 1)

enumerate()枚举:

l = ['手机','电话','充气娃娃',]
for i in enumerate(l,100):
    print(i)
'''
输出: 元组,100是起始值
(100, '手机')
         (101, '电话')
        (102, '充气娃娃')
'''
------------------------------------
#如果用两个值接收,则没有括号
l = ['手机','电话','充气娃娃',]
for i,j in enumerate(l,100):
    print(i,j)
'''
输出:
100 手机
101 电话
102 充气娃娃
'''

eval(): 有返回值 除去字符串两边的引号,返回里面的内容
exec(): 没有返回值 除去字符串两边的引号,执行里面的代码

 

s = "{'name':'alex'}"
s1 = "1+2+3+4"
print(eval(s),type(eval(s)))     #{'name': 'alex'} <class 'dict'>
print(exec(s),type(exec(s)))    #None <class 'NoneType'>
print(eval(s1))                           #10
code = '''for i in range(10):       
    print(i)'''
print(exec(code))                    # 0,1,2,3,4,None
any :和all对应   有一个True 就True

ord和char相对应:
#ord 输入字符,返回unicode对应的编码位置
print(ord('a'))        #97
print(ord('b'))        #98
print(ord(''))        #20013
#-----------------------------------------------
# chr 输入编码位置,返回unicode对应的字符
print(chr(97))           #"a"
print(chr(20013))        #"中"
print(ascii('a'))        #'a'
print(ascii(''))       #'\u56fd'
#%r  repr 原形毕露:
name = 'alex%r'%('sb')
print(name)
print(repr('[1,2]'))
print('[1,2]')
'''
输出:
alex'sb'
'[1,2]'
[1,2]
'''

#slice() 切片:

l1 = [11,22,33,44]
print(l1[1::2])           #[22,44]
sl = slice(1,4,2)
print(l1[sl])             #[22,44]
reversed(): 倒叙,形成一个新的迭代器
l1 = [11,33,22,44,'alex']
l2 = reversed(l1)
for i in l2:     #l2是迭代器需循环打印
    print(i)
l1 = [11,33,22,44,'alex']
l1.reverse()
print(l1)
#输出:['alex', 44, 22, 33, 11]

重要的内置函数:

max:

dic = {3:200,2:30,1:100}
def func(x):
    return x
l1 = max(dic,key=func,)
print(l1)
#输出:3   比较的是k
#-------------------------
dic = {3:20,2:30,1:100}
def func(x):
    return dic[x]
l1 = max(dic,key=func,)
print(l1)
#输出:1    比较的是value   打印的是key

zip:(可以理解为 拉链方法)可以放置多个可迭代对象,以最少的可迭代对象的个数为基准,返回一个迭代器

l1 = [1,2,3,4,5]
l2 = ['wusir','alex','taibai']
l3 = ['*',"**","***"]
print(zip(l1,l2,l3))   #输出:<zip object at 0x00000065E3C66B88>
l4 = zip(l1,l2,l3)
for i in l4:
    print(i)
'''
(1, 'wusir', '*')
(2, 'alex', '**')
(3, 'taibai', '***')
'''

map:是把可迭代对象的每一个元素,分别传入前面函数,返回迭代器

def func(x):return x*x
for i in map(func,[1,2,3,-4,-5,-7]):
    print(i)
'''
1
4
9
16
25
49
'''
filter:(过滤)如果function处理某元素时候返回true,那么该元素将作为迭代器list的成员
print([i for i in [1,2,3,4,5] if i % 2 == 0])   #[2, 4]  循环过滤出来的是列表,占内存
def func(x):return x % 2 == 0
for i in filter(func,[1,2,3,4,5]):
    print(i)                                    #filter返回的是迭代器,不占内存
sorted: 排序 返回的是列表
l1 = {2,4,3,1,6,5}
l2 = (2,4,3,1,6,5)
l3 = [2,4,3,1,6,5]
print(sorted(l1))
print(sorted(l2))
print(sorted(l3))
'''
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]
'''

带函数的sorted:

li = ['fsdafsa','fddsaf','qqq','fgasjdlg;dsjfg']
def func1(x):return len(x)
for i in sorted(li,key=func1):
    print(i)
'''
qqq
fddsaf
fsdafsa
fgasjdlg;dsjfg

'''

zip max min map filter 返回的是迭代器 sorted 返回的是列表

 

posted on 2018-02-07 17:53  刘。林  阅读(165)  评论(0编辑  收藏  举报

导航