111111

Python - 内置函数

Python - 内置函数

filter

filter(处理逻辑, 可遍历对象)遍历序列中的每个元素,判断每个元素的布尔值为True则保留元素.

用法:返回执行结果为TRUE的入参(入参是列表字符元组)

print filter(lambda x:x*x-4,range(10))
    #结果:[0, 1, 3, 4, 5, 6, 7, 8, 9]

map

map(处理逻辑, 可遍历的对象) 处理序列中的每个元素, 元素个数及位置
与原来一样.

用法:对列表入参依次执行函数。入参为列表,有多少个列表,就应该有多少个入参。

print map(lambda x:x*x-4,range(10))
    #结果:[-4, -3, 0, 5, 12, 21, 32, 45, 60, 77]
    print map(lambda x,y:x*y-4,range(3),[8,9,10])
    #结果:[-4, 5, 16]

reduce

from funtools import reduce

reduce(函数, 序列, 默认空参数)处理一个序列, 然后把写进行合作操作

用法:先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给fuction,最终返回一个结果值

#接收的入参个数只能为2
    print reduce(lambda x,y:x*y-4,range(4))
    #结果:-40
    #计算0到100的和
    print reduce(lambda x,y:x+y, range(101))
    #结果:5050
    print reduce(lambda x,y:x+y, range(101),100)
    #结果:5150

sort(cmp=None, key=None, reverse=False) 和 sorted(iterable, cmp=None, key=None, reverse=False)

sort是容器的函数,sorted是Python的内建函数相同的参数。

简单解释一下两函数:

sort(cmp=None, key=None, reverse=False)
sorted(iterable, cmp=None, key=None, reverse=False)
sort是容器的函数,sorted是Python的内建函数相同的参数。
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项。cmp(e1, e2) 是带两个参数的比较函数, 返回值:
负数: e1 < e2,
0: e1 == e2,
正数: e1 > e2。
默认为 None, 即用内建的比较函数。
key:用列表元素的某个已命名的属性或函数(只有一个参数并且返回一个用于排序的值)作为关键字,有默认值,迭代集合中的一项。
reverse:排序规则,reverse = True 或者 reverse = False,有默认值。
  1. 对于一个无序的列表a,调用a.sort(),对a进行排序后返回a。
    而对于同样一个无序的列表a,调用sorted(a),对a进行排序后返回一个新的列表,而对a不产生影响。

     >>> a=[1,3,5,2,9,4,7,8,6,0]
     >>> a.sort()
     >>> a
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     >>> a=[1,3,5,2,9,4,7,8,6,0]
     >>> sorted(a)
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     >>> a
     [1, 3, 5, 2, 9, 4, 7, 8, 6, 0]

复杂点的

        >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
        >>> list1.sort()
        >>> list1
        [(4, 'wutenglan', 30), (6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25)]
        >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
        >>> sorted(list1)
        [(4, 'wutenglan', 30), (6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25)]
        >>> list1
        [(6, 'cangjingkong', 20), (4, 'wutenglan', 30), (7, 'boduoyejiyi', 25)]

当list由tuple组成时,默认情况下,sort和sorted都会根据tuplp[0]作为排序的key进行排序

  1. 基于key函数排序:

     >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
     >>> list1.sort(key=lambda employee : employee[2])
     >>> list1
     [(6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25), (4, 'wutenglan', 30)]
     >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
     >>> sorted(list1,key=lambda employee : employee[2])
     [(6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25), (4, 'wutenglan', 30)]
     >>> list1
     [(6, 'cangjingkong', 20), (4, 'wutenglan', 30), (7, 'boduoyejiyi', 25)]
  2. 基于cmp函数排序:

     >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
     >>> list1.sort(cmp=lambda x,y : cmp(x[1],y[1]))
     >>> list1
     [(7, 'boduoyejiyi', 25), (6, 'cangjingkong', 20), (4, 'wutenglan', 30)]
     >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
     >>> sorted(list1,cmp=lambda x,y : cmp(x[1],y[1]))
     [(7, 'boduoyejiyi', 25), (6, 'cangjingkong', 20), (4, 'wutenglan', 30)]
     >>> list1
     [(6, 'cangjingkong', 20), (4, 'wutenglan', 30), (7, 'boduoyejiyi', 25)]

3.基于升序/降序排序:

>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort(reverse=False)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.sort(reverse=Ture)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Ture' is not defined
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort(reverse=False)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort(reverse=True)
>>> a
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> sorted(a,reverse=False)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> sorted(a,reverse=True)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a
[1, 3, 5, 2, 9, 4, 7, 8, 6, 0]

常用内置函数总结

一. 数学运算类型

abs(x)

求绝对值
1. 参数可以是整型, 也可以是复数
2. 若参数是复数, 则返回复数的模

complex([real[,imag]])

创建一个复数

divmod(a,b)

分别取商和余数
注意: 整型, 浮点型都可以

float([x])

将一个字符串或数转换为浮点数,如果五参数将返回0.0

int([x[,base]])

将一个字符转换为int类型,base表示进制

long([x[,base]])

将一个字符串转换为long类型

pow(x,y[,z])

返回x的一次幂

range([start],stop[,step])

产生一个序列, 默认从0开始

round(x[,n])

四舍五入

sum(iterable[,start])

对集合求和

oct(x)

将一个数字转化为8进制

hex(x)

将整数x转化为16进制字符串

chr(i)

返回整数i对应的ASCII字符

bin(x)

将整数转化为二进制字符串

bool([x])

将x转化为Boolean类型

二. 集合类操作

basestring()

str和unicode的超类
不能直接调用, 可以用作isinstance判断

format(value[,format_spec])

格式化输出字符串
格式化的参数顺序从0开始,如"I am {0},I like {1}"

unichr(i)

返回给定int类型的unicode

enumerate(sequence [, start = 0])

返回一个可枚举的对象,该对象的next()方法将返回一个tuple

>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))       # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

iter(0[,sentinel])

生成一个对象的迭代器,第二个参数表示分隔符

    s = '软件是深圳的未来'   #s是一个iterable对象,它有__getitem__()方法

it = iter(s)             #it是一个iterator对象,它有 __next__()和__iter__()方法

print(s)
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
结果输出如下:

软件是深圳的未来

软

件

是

深

max(iterable[, args...][key])

返回集合中的最大值

min(iterable[, args...][key])

返回集合中的最小值

dict([arg])

创建数据字典

list([iterable])

将一个集合类转换为另外一个集合类

set()

返回新的集合对象。

>>>x = set('runoob')
>>> y = set('google')
>>> x, y
(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))   # 重复的被删除
>>> x & y         # 交集
set(['o'])
>>> x | y         # 并集
set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
>>> x - y         # 差集
set(['r', 'b', 'u', 'n'])
>>>

frozenset([iterable])

产生一个不可变的set

str([object])

转换为string类型

tuple([iterable])

生成一个tuple类型

xrange([start], stop[, step])

xrange()函数与range()类似,但xrnage()并不创建列表,而是返回一个xrange对象,它的行为与列表相似,但是只在需要时才计算列表值,当列表很大时,这个特性能为我们节省内存

三. 逻辑判断

all(iterable)

1、集合中的元素都为真的时候为真
2、特别的,若为空串返回为True

any(iterable)

1、集合中的元素有一个为真的时候为真
2、特别的,若为空串返回为False

cmp(x, y)

如果x < y ,返回负数;x == y, 返回0;x > y,返回正数

四. 反射

callable(object)

检查对象object是否可调用
1、类是可以被调用的
2、实例是不可以被调用的,除非类中声明了__call__方法

classmethod()

1、注解,用来说明这个方式是个类方法
2、类方法即可被类调用,也可以被实例调用
3、类方法类似于Java中的static方法
4、类方法中不需要有self参数

compile(source, filename,mode[, flags[, dont_inherit]])

source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值。
1、参数source:字符串或者AST(Abstract Syntax Trees)对象。
2、参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
3、参数model:指定编译代码的种类。可以指定为 ‘exec’,’eval’,’single’。
4、参数flag和dont_inherit:这两个参数暂不介绍

dir([object])

1、不带参数时,返回当前范围内的变量、方法和定义的类型列表;
2、带参数时,返回参数的属性、方法列表。
3、如果参数包含方法__dir__(),该方法将被调用。当参数为实例时。
4、如果参数不包含__dir__(),该方法将最大限度地收集参数信息

delattr(object, name)

删除object对象名为name的属性

eval(expression [, globals [, locals]])

计算表达式expression的值

execfile(filename [, globals [, locals]])

用法类似exec(),不同的是execfile的参数filename为文件名,而exec的参数为字符串.

getattr(object, name [, defalut])

获取一个类的属性

globals()

返回一个描述当前全局符号表的字典

hasattr(object, name)

判断对象object是否包含名为name的特性

hash(object)

如果对象object为哈希表类型,返回对象object的哈希值

isinstance(object, classinfo)

判断object是否是class的实例

issubclass(class, classinfo)

判断是否是子类

len(s)

返回集合长度

locals()

返回当前的变量列表699

memoryview(obj)

返回一个内存镜像类型的对象

next(iterator[, default])

类似于iterator.next()

object()

基类

property([fget[, fset[, fdel[, doc]]]])

属性访问的包装类,设置后可以通过c.x=value等来访问settergetter

reload(module)

重新加载模块

setattr(object, name, value)

设置属性值

repr(object)

将一个对象变幻为可打印的格式

slice(start,end)

方法可从已有数组中返回选定的元素,返回一个新数组,包含从startend(不包含该元素)的数组元素。

staticmethod

声明静态方法,是个注解

super(type[, object-or-type])

引用父类

type(object)

返回该object的类型

vars([object])

返回对象的变量,若无参数与dict()方法类似

bytearray([source [, encoding [, errors]]])

返回一个byte数组
1、如果source为整数,则返回一个长度为source的初始化数组;
2、如果source为字符串,则按照指定的encoding将字符串转换为字节序列;
3、如果source为可迭代类型,则元素必须为[0 ,255]中的整数;
4、如果source为与buffer接口一致的对象,则此对象也可以被用于初始化bytearray.

zip([iterable, ...])

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped)  # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c))              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
 
>>> a1, a2 = zip(*zip(a,b))          # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>

五. IO操作

file(filename [, mode [, bufsize]])

file类型的构造函数,作用为打开一个文件,如果文件不存在且mode为写或追加时,文件将被创建。添加‘b’到mode参数中,将对文件以二进制形式操作。添加‘+’到mode参数中,将允许对文件同时进行读写操作
1、参数filename:文件名称。
2、参数mode:'r'(读)、'w'(写)、'a'(追加)。
3、参数bufsize:如果为0表示不进行缓冲,如果为1表示进行行缓冲,如果是一个大于1的数表示缓冲区的大小 。

input([prompt])

获取用户输入
推荐使用raw_input,因为该函数将不会捕获用户的错误输入

open(name[, mode[, buffering]])

打开文件

与file有什么不同?推荐使用open

print

打印函数

raw_input([prompt])

设置输入,输入都是作为字符串处理

其他

help()--帮助信息

Python是什么?

python是运维晋升的一个趋势

python下载地址

https://www.python.org/downloads/

 

python解释器pycharm安装以及激活

http://idea.lanyus.com/              获取验证码

#!/usr/bin/env python
#_*_ coding:utf-8 _*_
# ** author: zhaobin
# ** description: more function
# ** createDate: 2018-8-13
# ** run python: python xxxx.py  
# *****************************

1.文件头

#!/usr/bin/env python
#_*_ coding:utf-8 _*_
 
Linux下修改pip源方法如下:

linux下,修改 ~/.pip/pip.conf (没有就创建一个),

 

[global]
timeout = 6000
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com

  

 

2.python的文件可以是任意的后缀名

2.1、执行 Python 脚本的两种方式
直接调用python脚本,用python解释器去调用python脚本

2.2、简述位、字节的关系
一个字节是8位,计算机计算是以字节为单位,存储是以位单位

2.3、简述 ascii、unicode、utf-­‐8、gbk 的关系
最先出现的是ascii编码,其次是unicode编码,又因为每个国家的标准不同,继而出现unicode的压缩编码utf-8。ascii码8位,unicode码16位。用ascii码表示的字符,再用unicode表示就会造成内存浪费,提出的utf-8编码,能用多少表示就用多少表示。

2.4、请写出 “李杰” 分别用 utf-­‐8 和 gbk 编码所占的位数
Utf-8 中文一个字代表3个字节,占了6个字节
Gbk是一个代表2个字节,占了4个字节

 

3.单行注释: # 注释内容

多行注释:"""注释内容"""

4变量的声明与引用

#!/usr/bin/env python 会查找python的位置

name='buer'    #变量的声明
name           #通过变量名,引用变量的值
print(name)    #引用并且打印变量的名name对应的值,即'buer'
 1 #所有脚本第一句话都要写解释以下脚本是用什么解释器
 2 #!/usr/bin/python python
 3 #语言设置为:简体中文
 4 #_*_coding:utf-8_*_
 5 
 6 
 7 #变量定义的规则:
 8 
 9 #变量名只能是 字母、数字或下划线的任意组合
10 #变量名的第一个字符不能是数字
11 #以下 关键字 不能声明为变量名
12 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif',
13  'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if',
14  'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise',
15  'return', 'try', 'while', 'with', 'yield']
16 #变量要有意义
17 #变量不能太长
18 #不要用中文
19 #推荐使用驼峰或者下划线命名
20 #区分大小写

5.简单的账号密码

1 #input <输入>
 2 #print<打印>
 3 username = input('用户名')
 4 password = input('密码')
 5 print(username,password)
 6 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 7 #输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
 8 
 9 
10 import getpass
11 
12 username = input('usernmae:')
13 password = getpass.getpass('password:')
14 
15 print(username,password)
16 
17 
18 
19 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20 
21 #  .format   <格式>
22 #  import    <调用>  getpass<py系统自带函数模块,密文输入>
23 #  print     <打印>
24 #  if        <条件成立执行>
25 #  and       <而且>
26 #  else      <if条件不成立时执行>
27 
28 import getpass
29 
30 name = 'alex'
31 word = 'as123'
32 
33 username = input('名字:')
34 password = input('密码:')
35 
36 if name == username and word == password:
37     print('欢迎 {N} 登录'.format(N=name))
38 else:
39     print('账号或者密码错误')

6.for循环

 1 #  i  <变量名>
 2 #  range(10)  <范围>  (0,1,2,3,4,5,6,7,8,9)<0-9十个数>
 3 
 4 for i in range(10):
 5     print('loop',i)
 6 
 7     
 8 #  (0,10,3)  <起始数,结束值,步长>  <步长默认加1>
 9 for i in range(0,10,3):
10     print('loop',i)
11 
12 
13 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14 
15 # continue  <跳出本次循环,重新循环>
16 
17 for h in range(0,10):
18     if h <3:
19         print('loop',h)
20     else:
21         print('kkkkkk...')
22         continue
23         print('yyyyyy...')
24     print('呵呵呵...')
25 
26 ######################################>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
27 
28 #  for t in range(9)  <条件循环> <变量名> <在> <范围(参数)>
29 #  print  <打印>
30 #  if     <条件判断>
31 #  break  <中止程序>
32 
33 for t in range(9):
34     print('______',t)
35     for j in range(11,50):
36         print(j)
37         if j >= 22:
38                break

7.python的数据类型

 1 1、数字
 2 int(整型)
 3 -9223372036854775808~9223372036854775807
 4 
 5 float(浮点型)
 6 3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4
 7 complex(复数)
 8 (-5+4j)和(2.3-4.6j)是复数的例子,其中-5,4为实数,j为虚数
 9 
10 2、布尔值
11   真或假
12   1 或 0
13 
14 3、字符串
15 "hello world"

8.显示数据类型

View Code

9.数据运算

View Code

10. 简单的几个习题

10.1 使用while循环输入 1 2 3 4 5 6 8 9 10

#coding=utf-8
count = 1
while count < 11:
    if count == 7:
        pass
    else:
        print (count)
    count = count+1

print ('--end--')

10.2 求1-100的所有数的和

#coding=utf-8
a = 1
b = 0
while a < 101:
    b = b + a
    a = a+1
print (b)

 

10.3求1-100的所有偶数

#coding=utf-8
a = 1
while a < 101:
    temp = a %2
    if temp ==0:
       pass
       print (a)
    else:
       pass
    a = a+1   

10.4求1-2+3-4+5..99的所有和

#coding=utf-8
a = 1
b = 0
while a < 101:
    temp = a % 2 
    if temp == 0:
        b = b - a
    else:
        b = b + a
    a = a+1
print(b)

 10.5 用户登录(3次重试机会)

import getpass
s_name = "zhao"
s_pass = "123456"
count = 0
while count < 3:
    tar_name = input("输入你的账户")
    password = input("输入你的密码")
    if tar_name == s_name and password == s_pass:
        print "欢迎进入"
        break
    elif not tar_name and not password:
        print "账户名不能为空"
        count +=1
    else:
        print "账户密码错误"
        count +=1

 

一、流程控制

1.条件语句

条件判断

计算机之所以能做很多自动化的任务,因为它可以自己做条件判断

1
2
3
= 5
if a > 2:
    print('yes')

根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。

也可以给if添加一个else语句,意思是,如果if判断是False,不要执行if的内容,去把else执行了:

a = 5
if a > 8:
    print('yes')
else:
    print('no')
复制代码
a = 5
if a > 8:
    print('yes')
elif a > 3:
    print('no')
else:
    print('bey')
复制代码

elifelse if的缩写,完全可以有多个elif,所以if语句的完整形式就是:

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elifelse

if判断条件还可以简写,比如写:

1
2
if x:
    print('True')

只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False

2.循环

Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看例子:

for i in range(0,5):
    print(i)
else:
    print('The for loop is over')
names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)

所以for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句。

再比如我们想计算1-100的整数之和,可以用一个sum变量做累加:

sum = 0
for x in range(101):
    sum+=x
print(sum)

习题:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。

复制代码
for x in range(1,20):
    for y in range(1,33):
        z = 100-x-y
        if (z % 3 == 0) and (x * 5 + y * 3 + z / 3 == 100):
            s = "公鸡:%d;母鸡:%d;小鸡:%d;" %(x,y,z)
            print(s)
复制代码

第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:

复制代码
sum = 0
n = 99
while n > 0:
    sum += n
    n = n - 2
print(sum)
复制代码

break

在循环中,break语句可以提前退出循环。例如,本来要循环打印1~100的数字:

复制代码
n = 1
while n <= 100:
    if n > 10: # 当n = 11时,条件满足,执行break语句
        break # break语句会结束当前循环
    print(n)
    n += 1
print('END')
复制代码

执行上面的代码可以看到,打印出1~10后,紧接着打印END,程序结束。

可见break的作用是提前结束循环。

continue

在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环。

复制代码
n = 0
while n < 10:
    n += 1
    if n % 2 == 0: # 如果n是偶数,执行continue语句
        continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)
复制代码

执行上面的代码可以看到,打印的不再是1~10,而是1,3,5,7,9。

可见continue的作用是提前结束本轮循环,并直接开始下一轮循环。

小结:break用于退出本层循环;continue用于退出本次循环,继续下一次循环

posted @ 2024-11-21 10:03  赵SIR  阅读(3)  评论(0编辑  收藏  举报