python内部提供了很多内建函数。下面让我们从a-z开始学习python的内建函数
1.1 filter(function,iterable) 参数iterable的元素通过函数function返回为true的所有元素构建成一个迭代器并且返回,参数iterable可以是任何可以迭代的对象, 如果参数function是None,那么删除所有为判断为false的元素,具体看下面实例 #用filter求素数 #首先构造一个下从3开始的奇数序列 #python的生成器generator, def _odd_iter(): n=1 while True: n=n+2 yield n def _not_divisible(n): return lambda x:x%n>0 #lambda相当于函数体为单个return语句的普通函数的匿名函数 #lambda不使用return关键字,开发者可以使用函数应用的位置使用lambda表达式 #在开发者想要使用一个简单函数作为参数或者返回值时,使用lambda表达式是很方便的 #lambda用的很少,大多数使用def def primes(): yield 2 #把第一个2加进生成器 it = _odd_iter() #初始化序列 while True: n=next(it) #返回序列的第一个数 yield n #由于primes是一个无限序列,所以调用时需要设置一个退出循环的条件 #打印100以内的素数 for n in primes(): if n<100: print(n) else: break 一个实例: l=[2,11,5,3,4,7,56,21,32,29,31,0]; def func(x): if(x > 10): return True else: return False print(list(filter(func,l))) 输出的结果是:[11, 56, 21, 32, 29, 31] l=[2,11,5,3,4,7,56,21,32,29,31,0]; def func(x): if(x > 10): return True else: return False print(list(filter(None,l))) 输出的结果是:[2, 11, 5, 3, 4, 7, 56, 21, 32, 29, 31] 另外,需要提一个是我在别人网站看到的一个例子,自己用了很复杂的办法做的 回数是指从左向右读和从右向左读都是一样的数,例如12321,909。请利用filter()滤掉非回数: def is_palindrome(n): if(str(n)[::-1] == str(n)): return True else: return False output = filter(is_palindrome, range(1, 100)) print(list(output)) 输出的结果是: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99] 没想到这个办法,自己用了很复杂的办法的。Python真的很简洁 1.2 float([x]) 强制转换,把一个整数或者一个字符串强制转换成一个浮点数 1.3 format(value[,format_spec]) 本函数把值value按format_spec的格式来格式化,然而函数解释format_spec是根据value的类型来决定的,不同的类型有不同的格式化解释。当参数format_spec为空时,本函数等同于函数str(value)的方式。 其实本函数调用时,是把format(value, format_spec)的方式转换为type(value).__format__(format_spec)方式来调用,因此在value类型里就查找方法__format__(),如果找不到此方法,就会返回异常TypeError。 其中format_spec的编写方式如下形式: format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] fill ::= align ::= < | > | = | ^ sign ::= + | - | width ::= integer precision ::= integer type ::= b | c | d | e | E | f | F | g | G | n | o | s | x | X | % fill是表示可以填写任何字符。 align是对齐方式,<是左对齐, >是右对齐,^是居中对齐。 sign是符号, +表示正号, -表示负号。 width是数字宽度,表示总共输出多少位数字。 precision是小数保留位数。 type是输出数字值是的表示方式,比如b是二进制表示;比如E是指数表示;比如X是十六进制表示。 实例: print(format(3.14,"0=10"))#保留十位,其余用0填充,在前面填充 print(format(3.1515926,‘E‘)) print(format(3.1415926,‘05.3‘))#保留五位,包含小数点,小数点后两位 print(format(‘hello‘,‘<20‘))#左对齐 print(format(‘hello‘,‘^20‘))#居中对齐 print(format(‘hello‘,‘>20‘))#右对齐 print(format(3.1515926,‘+‘))#添加符号 输出的结果是: 0000003.14 3.151593E+00 03.14 hello hello hello +3.1515926 1.4 getattr(object,name[,default]) 返回object的name属性的名字,如果没有这个属性返回false 实例: class pep: pass p = pep() print(getattr(p,‘ok‘)) setattr(p,‘ok‘,‘hello‘) print(getattr(p,‘ok‘)) 输出的结果是: AttributeError: ‘pep‘ object has no attribute ‘ok‘ hello 1.5 globals() 返回一个代表当前全部符号表的字典,这是当前模块(在一个函数或方法中的字典),这是它被定义的模块,而不是它被调用的模块。 1.6 hasattr(object, name) 判断,name是否为object的属性,如果是返回true否则返回false。 class pep: pass p = pep() print(hasattr(p,‘ok‘)) setattr(p,‘ok‘,‘hello‘) print(hasattr(p,‘ok‘)) 返回的结果是: False True 1.7 hash(object) 返回object参数的hash值,哈希值是整数,他们可以用来快速的进行字典查询 实例: print(hash(‘str‘)) print(hash(1995)) print(hash(0.65)) 输出的结果是: 926707834525168157 1995 1498797955988901120 1.8 hex(x) 将整数integer转换为16进制数,不能为float性,否则会报错 print(hex(2)) print(hex(66)) 0x2 0x42
钟志远 江苏南京 904727147
时间: 2024-10-10 03:53:34