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