2022年 11月 4日

Python常用基础语法

基本数据类型(字符串、列表、字典)及其内置函数、推导式、循环(for,while)、map函数、lambda函数、递归函数

基础语法

print(r'hello\n') # 加上r,\n不会进行转义
  • 1

数据类型

Python3 中有六个标准的数据类型:
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)

Python3 的六个标准数据类型中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

Number

整型(int) – 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。布尔(bool)是整型的子类型。

浮点型(float) – 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)

复数( (complex)) – 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型

type(a)                             # 查询变量类型
isintance(a, int)                   # 判断是否为某类型
1 is True                           # is 判断类型
var1 = 1                            # 创建对象
del var1
del var1, var2                      # 删除对象

+ - * 
a / b                               # 得到一个浮点数
a // b                              # 得到一个整数
a ** b                              # 乘方
a % b                               # 取余
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注意:

  1. bool是int的子类,True和False可以和数字相加
  2. 在混合计算时,Python会把整型转换成为浮点数。
  3. 在交互模式中,最后被输出的表达式结果被赋值给变量 下划线”_”

数学函数

abs(x)                              # 绝对值函数
math.ceil(x)                        # 返回数字的上入整数
math.exp(x)                         # e的次幂
math.fabs(x)                        # 数字的绝对值
math.floor(x)                       # 数字的下舍整数
math.log(x, a)                      # log_a(x),底数为a,如math.log(math.e)返回1.0
math.log10(100)                     # 返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,...)                     # 最大值
min(x1, x2,...)                     # 最小值
modf(x)                             # 返回x的整数部分和小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
pow(x, y)                           # x的y次幂
round(x,n)                          # 四舍五入
sqrt(x)                             # x开二次方
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

随机数函数

choice(seq)     # 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange(start, stop, step) # 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random()        # 随机生成下一个实数,它在[0,1)范围内。
seed(x)         # 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(list)   # 将序列的所有元素随机排序
uniform(x, y)   # 随机生成下一个实数,它在[x,y]范围内。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

三角函数

acos(x)         # arccosx
asin(x)         # arcsinx
atan(x)         # arctanx
atan2(y, x)     # 返回给定的 X 及 Y 坐标值的反正切值。
cos(x)
hypot(x, y)     # 返回欧几里德范数 sqrt(x*x + y*y)。
sin(x)
tan(x)
degrees(x)      # 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x)      # 将角度转换为弧度
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

字符串, 左闭右开

print (str)          # 输出字符串
print (str[0:-1])    # 输出第一个到[倒数第二个]的所有字符
print (str[0])       # 输出字符串第一个字符
print (str[2:5])     # 输出从第三个开始到第五个的字符
print (str[2:])      # 输出从第三个开始的后的所有字符
print (str * 2)      # 输出字符串两次,也可以写成 print (2 * str) 
print (str + "TEST") # 连接字符串
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

格式化字符串

%c  # char字符
%s  # string字符串
%d  # digit整数
%u  # unsigned无符号整型
%o  # 无符号八进制数
%x  # 无符号十六进制数
%X  # 无符号十六进制数-大写
%f  # float 浮点数,可指定精度
%e 或 %E  # 科学计数法格式化浮点数
%g  # %f加上%e 科学技术法格式化浮点数
%G  # %f加上%E
%p  # 用十六进制数格式化变量地址

*   # 定义宽度或小数点精度
-   # 左对齐
+   # 在正数前面显示加号
<sp># 在正数前面显示空格
#   # 在八进制数前面显示零,在十六进制前面显示0x或0X
0   # 显示的数字前面填充0,而不是默认的空格
%   # ’%%‘输出一个单一的’%‘
(var)# 映射变量(字典参数)
m.n.# m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

格式化函数:

基本语法是通过 {} 和 : 来代替以前的 % 。
括号里可以直接写进,也可以用**字典、列表索引、对象

str.format()    #格式化函数

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'
 
>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'
 
>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'

print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
# 网站名:菜鸟教程, 地址 www.runoob.com

# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))
# 网站名:菜鸟教程, 地址 www.runoob.com

# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的
# 网站名:菜鸟教程, 地址 www.runoob.com

# 向 str.format() 传入对象:
print('value 为: {0.value}'.format(my_value))  # "0" 是可选的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

数字格式化:
https://www.runoob.com/python/att-string-format.html

{:.2f}
{:+.2f}
{:-.2f}
{:.0f}
{:0>2d}
{:x<4d}
{:,}
{:.2%}
{:.2e}
{:>10d}
{:<10d}
{:^10d}
{:b}
{:d}
{:o}
{:x}
{:#x}
{:#X}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

字符串内建函数

string.capitalize()     # 第一个字符大写
string.swapcase()       # 反转大小写
string.title()          # 所有单词以大写开始,其余字母均为小写
string.translate(str, del="") # 根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参数中

string.center(width)    # 返回原字符串居中,其他位置用空格填充
string.ljust(width)     # 返回一个原字符串左对齐,并使用空格填充至字符串width的新字符串
string.rjust(width) # 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
string.strip()          # 截掉前后的空格
string.lstrip()         # 截掉 string 左边的空格
string.rstrip()         # 截掉 string 右边的空格

string.count(str, beg=0, end=len(string)) # 返回str在string的[begin, end)出现的次数
string.decode(encoding='UTF-8', errors='strict) # 以对应编码格式解码string
string.encode(encoding='UTF-8', errors='strict') # 以对应编码格式编码string

string.startswith(obj,beg=0,end=len(string)) # 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查
string.endswith(obj, beg=0, end=len(string))    # 检查字符串是否以obj结束
string.find(str, beg=0, end=len(string))    # 检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
string.index(str, beg=0, end=len(string))   # 跟find()方法一样,只不过如果str不在 string中会报一个异常.

string.format()     # 格式化字符串
string.lower()      # 全部小写
string.expandtabs(tabsize=8)    # 把字符串string中的tab符号转为空格,默认空格数为8个


string.isalnum()    # is alphabet or num -> 如果 string 至少有一个字符 并且 所有字符都是字母或数字则返回 True,否则返回 False
string.isalpha()    # 如果 string 至少有一个字符并且所有字符都是字母则返回 True
string.isdecimal()  # 如果 string 只包含十进制数字则返回 True 否则返回 False.
string.islower()    # 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
string.isnumeric()  # 如果string中只包含数字字符串,则返回True,否则返回false
string.isspace()    # 如果 string 中只包含空格,则返回 True,否则返回 False.
string.istitle()    # 如果 string 是标题化的(见 title())则返回 True,否则返回 False
string.isupper()    # 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

string.join(seq)    # 以string作为分隔符,将seq中所有的元素合并成为一个新的字符串
string.maketrans(intab, outtab) # maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 https://www.runoob.com/python/att-string-maketrans.html

max(str)            # str中最大的字母
min(str)            # str中最小的字母

string.partition(str) # 有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.
string.rpartition(str) # 类似于 partition()函数,不过是从右边开始查找
string.split(str, num=string.count(str))    # 以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串
string.splitlines(keepends)   # 按照行('\r', '\r\n', '\n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

string.replace(str1, str2, num=string.count(str1)) # 把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
string.rfind(str, beg=0, end=len(string)) # 类似于 find() 函数,返回字符串最后一次出现的位置,如果没有匹配项则返回 -1。
string.rindex(str, beg=0, end=len(string)) # 类似于 index(),不过是返回最后一个匹配到的子字符串的索引号。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

列表List

    # 通过空格将字符串分隔符,把各个单词分隔为列表
    inputWords = input.split(" ") 
    
    # 翻转字符串
    # 假设列表 list = [1,2,3,4],  
    # list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样) 
    # inputWords[-1::-1] 有三个参数
    # 第一个参数 -1 表示最后一个元素
    # 第二个参数为空,表示移动到列表末尾
    # 第三个参数为步长,-1 表示逆向
    inputWords=inputWords[-1::-1] 
    
    # 重新组合字符串
    output = ' '.join(inputWords) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

列表增删改查

list = ['abc', 123, 1.23]
list1 = ['abc', 123, 1.23]
list2 = ['abc', 123, 1.23]

list                # 获得完整列表
list[0]             # 第一个元素
list[1:3]           # 2-3个元素(左闭右开)
list[2:]            # 从第三个元素开始的所有元素

list = []
list.append()       # 添加元素
del list[n]         # 删除元素
len(list)           # 长度
list1+list2         # 组合
list * 4            # 重复
'abc' in list       # 元素是否在列表中
for x in list: ...  # 迭代
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

Python列表函数和方法

cmp(list1, list2)       # 比较两个列表的元素
max(list) min(list)     # 最大最小值 字符串按字典排序
list(seq)               # 将元组转换为列表

lst.append(x)           # 添加对象
lst.count(x)            # 统计出现次数
lst.extend(seq)         # 在列表末尾一次性追加另一个序列中的多个值
lst.index(obj)          # 从列表中找出某个值第一个匹配项的索引位置
lst.insert(index, obj)  # 将对象插入列表
lst.pop(index=-1)       # 移除列表中的(默认最后一个)一个元素,并返回该元素的值
lst.remove(obj)         # 移除列表中某个值的第一个匹配项
lst.reverse()           # 反向列表中的元素
lst.sort(cmp=None, key=None, reverse=False) # 对列表进行排序
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

数据类型转换

int(x [,base]) #将x转换为一个整数
long(x [,base] ) #将x转换为一个长整数
float(x) #将x转换到一个浮点数
complex(real [,imag]) #创建一个复数
str(x) #将对象 x 转换为字符串
repr(x) #将对象 x 转换为表达式字符串
eval(str) #用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) #将序列 s 转换为一个元组
list(s) #将序列 s 转换为一个列表
set(s) #转换为可变集合
dict(d) #创建一个字典。d 必须是一个序列 (key,value)元组。
frozenset(s) #转换为不可变集合
chr(x) #将一个整数转换为一个字符
unichr(x) #将一个整数转换为Unicode字符
ord(x) #将一个字符转换为它的整数值
hex(x) #将一个整数转换为一个十六进制字符串
oct(x) #将一个整数转换为一个八进制字符串
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

推导式

列表推导式

names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
new_names = [name.upper() for name in names if len(name)>3]

multiples = [i for i in range(30) if i % 3 == 0]
  • 1
  • 2
  • 3
  • 4

字典推导式

listdemo = ['Google','Runoob', 'Taobao']
newdict = {key : len(key) for key in listdemo}
# {'Google': 6, 'Runoob': 6, 'Taobao': 6}

dic = {x : x**2 for x in (2,4,6)}
# {2: 4, 4: 16, 6: 36}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

集合推导式

setnew = {i**2 for i in (1,2,3)}
# {1, 4, 9}

str = 'abracadabra'
a = {x for x in str if x not in 'abc'}
# {'d', 'r'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

元组推导式

a = (x for x in range(1, 10)) 
# <generator object <genexpr> at 0x7faf6ee20a50>  
# 返回的是生成器对象

tuple(a) # 使用 tuple() 函数,可以直接将生成器对象转换成元组
  • 1
  • 2
  • 3
  • 4
  • 5

运算符

位运算符

a = 60            # 60 = 0011 1100 
b = 13            # 13 = 0000 1101 
c = 0
 
# 按位与运算,两者都为1才是1 
c = a & b        # 12 = 0000 1100 
print ("1 - c 的值为:", c)

# 按位或运算,其中一个是1就是1
c = a | b        # 61 = 0011 1101 
print ("2 - c 的值为:", c)
 
# 异或运算,两者相同则为1
c = a ^ b        # 49 = 0011 0001
print ("3 - c 的值为:", c)
 
# 按位取反
c = ~a           # -61 = 1100 0011
print ("4 - c 的值为:", c)

# 左移动n位,右边补0
c = a << 2       # 240 = 1111 0000
print ("5 - c 的值为:", c)
 
# 右移动n位,左边补0
c = a >> 2       # 15 = 0000 1111
print ("6 - c 的值为:", c)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

元组 Tuple

Python 的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

元组增删改查

创建元组
tup1 = ()           # 空元组
tup1 = (50, )       # 元组中只包含一个元素时,需要在元素后面添加逗号


访问元组
tup1[0]
tup1[1:5]

修改元组
tup[0] = 100 # 这样直接赋值修改元组元素操作是非法的!!!
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
tup3 = tup2 + tup1 # 创建一个新的元组

删除元组
del tup              
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

元组运算符

len(tup1)       # 长度
tup1+tup2       # 连接
tup1 * 4        # 复制
3 in (1,2,3)    # 元素是否存在
for x in (1,2,3):...    # 迭代
  • 1
  • 2
  • 3
  • 4
  • 5

元组索引,截取

tup = ('spam', 'Spam', 'SPAM!')

tup[2]      # 读取第三个元素
tup[-2]     # 倒数第二个
tup[1:]     # 截取元素
  • 1
  • 2
  • 3
  • 4
  • 5

任意无符号的对象,以逗号隔开,默认为元组

x, y = 1, 2
print("Value of x , y : ", x,y)
# Value of x , y : 1 2
  • 1
  • 2
  • 3

元组内置函数

cmp(tp1, tp2)       # 比较
len(tp1)            # 长度
max(tp1) min(tp1)   # 返回元组中元素的最大值/最小值
tuple(seq)          # 将列表转换为元组
  • 1
  • 2
  • 3
  • 4

字典Dictionary

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中

d = {key1 : value1, key2 : value2 }

注意:dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

创建字典
tinydict = {'a' : 1, 'b': 2}
tinydict2 = { 'abc': 123, 98.6: 37 }
  • 1
  • 2
  • 3

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

字典增删改查

dic[key]            # 查
dic[key] = value    # 改/增

del tinydict['Name']  # 删除键是'Name'的条目
tinydict.clear()      # 清空字典所有条目
del tinydict          # 删除字典
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

内置函数

cmp(dic1, dic2)         # 比较两个字典元素
len(dic)                # 长度
str(dic)                # 输出字典可打印的字符串表示
type(variable)          # 返回输入的变量类型,如果变量是字典就返回字典类型。

dt.clear()              # 删除字典内所有元素
dt.copy()               # 返回一个字典的浅复制
dt.fromkeys(seq)        # 创建一个新字典,以序列seq中元素做字典的键
dt.get(key, default=None)# 返回指定键的值,如果值不在字典中则返回default值
dt.has_key(key)         # 如果键在字典dict里,返回true,否则返回false
dt.items()              # 以列表返回可遍历的(键、值)元组数组
dt.keys()               # 返回字典所有的键(列表形式)
dt.setdefault(key, default=None) # 和get()相似,但如果键不存在于字典中,将会添加键并将值设置为 default
dt.update(dict2)        # 把字典dict2的键值对更新到dt里
dt.values()             # 以列表返回字典中所有值
pop(key)                # 删除字典给定键key所对应的值,返回值为被删除的值,key必须给出,
popitem()               # 返回并删除字典中的最后一对键和值
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

lambda函数

在Python中,我们使用lambda关键字来声明一个匿名函数,这就是为什么我们将它们称为“lambda函数”。匿名函数是指没有声明函数名称的函数。尽管它们在语法上看起来不同,lambda函数的行为方式与使用def关键字声明的一般函数相同。以下是Python中 lambda函数的特点:

lambda函数可以接受任意数量的参数,但函数只能包含一个表达式。表达式是lambda函数执行的一段代码,它可以返回任何值,也可以不返回任何值。

product = lambda x, y: x * y 
print(product(2.3))


  • 1
  • 2
  • 3
  • 4

原文链接:https://blog.csdn.net/sinat_38682860/article/details/88917715

Python内置函数

map函数

>>> def square(x) :         # 计算平方数
...     return x ** 2
... 

>>> map(square, [1,2,3,4,5])    # 计算列表各个元素的平方
<map object at 0x100d3d550>     # 返回迭代器

>>> list(map(square, [1,2,3,4,5]))   # 使用 list() 转换为列表
[1, 4, 9, 16, 25]

>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))   # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

filter函数

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

过滤出1~100中平方根是整数的数

import math
def is_sqr(x):
    return math.sqrt(x) % 1 == 0
 
newlist = filter(is_sqr, range(1, 101))
print(newlist)

>>> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

reduce()

reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:

  • 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,
  • 得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
from functools import reduce

def add(x, y) :            # 两数相加
    return x + y
    
sum1 = reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5

sum2 = reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数

print(sum1) # 15
print(sum2) # 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

zip()
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
打包变成tuple->list

>>> 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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

slice()
slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。

>>>myslice = slice(5)    # 设置截取5个元素的切片
>>> myslice
slice(None, 5, None)
>>> arr = range(10)
>>> arr
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> arr[myslice]         # 截取 5 个元素
[0, 1, 2, 3, 4]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

其他函数

divmod(a, b)        # 返回a//b和a%b 商和余数

ord(c)              
# ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。 a->'97'

any(iterable)
# any() 函数用于判断给定的可迭代参数 iterable(元组或列表) 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。

eval()
# eval() 函数用来执行一个字符串表达式,并返回表达式的值。
>>> x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> n=81
>>> eval("n + 4")
85

str()
# str() 函数将对象转化为适于人阅读的形式。
>>> dict = {'runoob': 'runoob.com', 'google': 'google.com'};
>>> str(dict)
"{'google': 'google.com', 'runoob': 'runoob.com'}"


file()
# 创建file对象
>>>f = file('test.txt')
>>> f.read()
'RUNOOB1\nRUNOOB2\n'

execfile()
# 执行文件

issubclass(A, B)
# A 是不是 B的subclass

frozenset() 
# 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

list.reverse()
# reverse() 函数用于反向列表中元素。

set()
# set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

dict()
>>>dict()                        # 创建空字典
{}
>>> dict(a='a', b='b', t='t')     # 传入关键字
{'a': 'a', 'b': 'b', 't': 't'}
>>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
{'three': 3, 'two': 2, 'one': 1} 
>>> dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
>>>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59