python内置函数(三)

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

你可能感兴趣的:(python,python,函数,filter)