python 内置函数-range()+zip()+sorted()+map()+reduce()+filter()

目录
  • range函数
  • zip() 函数
  • 其它内置函数
    • 数据类型转换相关内置函数
    • 变量相关函数
    • 数学相关函数
    • 进制相关函数
  • 高阶函数
    • sorted(iterable,[reverse,key])
    • map(func, *iterables)
    • reduce(func,iterable)
    • filter(func,iterable)

range函数

能够生成一个指定的数字序列

使用案例:

'''
range(start,stop,step)
参数:
    start : 开始的值 ,默认值为0
    stop  : 结束的值
    step: 可选,步进值 默认值为1
返回值: 可迭代的对象,数字序列
'''
#range函数的使用方式
# 只写一个参数,就是从零开始到10之前,9
 res = range(11)

# 两个参数时,第一个参数是开始的值,第二个参数是结束的值(在结束值之前)
 res = range(5,10)

# 三个参数, 参数1是开始值,参数2是结束值,参数三是步进值
 res = range(1,10,3)

# 获取一个倒叙的数字序列
 res = range(10,0,-1)
 res = range(10,0,-2)

res = range(-10,-20,-1)
res = range(-20,-10)
res = range(-10,10)
print(list(res))

提取range()函数返回的数字序列的方法:

# 获取range函数返回的数字序列的方法
 res = range(10)

list列表数据

 print(list(res))

过 for循环 进行遍历

 for i in res:
     print(i)

转为迭代器,使用next函数调用

res = iter(res)
 print(next(res))
 print(next(res))

zip() 函数

zip 函数是可以接受多个可迭代的对象,然后把每个可迭代对象中的第i个元素组合在一起,形成一个新的迭代器

示例:

参数:*iterables,任意个的 可迭代对象
返回值: 返回一个元组的迭代器

var1 = '1234'
var2 = ['a','b','c']
var3 = ('A','B','C','D')

调用zip函数,组成新的元组迭代器

res = zip(var1,var2,var3)
# print(res,type(res))

for i in res:
    print(i)
'''
('1', 'a', 'A')
('2', 'b', 'B')
('3', 'c', 'C')
('4', 'd', 'D')
'''

zip() 与 * 运算符相结合可以用来拆解一个列表:

x = [1, 2, 3]
y = [4, 5, 6]
zipped = zip(x, y)
print(list(zipped))

print(zip(x, y)) # 迭代器对象,
print(*zip(x, y))# 组合好的多个元组数据

其它内置函数

数据类型转换相关内置函数

  • int() 将其它类型数据转为整型
  • float() 转为浮点类型
  • bool() 转为布尔类型
  • complex() 转为复数
  • str() 转为字符串类型
  • list 转为列表类型
  • tuple 转为元组类型
  • dict 转为字典类型
  • set 转为集合类型

变量相关函数

  • id() 获取当前数据的ID标识
  • type() 获取当前数据的类型字符串
  • print() 数据的打印
  • input() 获取输入的数据
  • isinstance() 检测是否为指定的数据类型

数学相关函数

#

 获取一个数的绝对值
 print(abs(-99.99))

# 求和 从 start 开始自左向右对 iterable 中的项求和并返回总计值
 print(sum([1,2,3]))

# 获取最大值
 print(max([1,2,3]))
 print(max(99,12,45))

# 获取最小值
 print(min([2,1,6,-9]))
 print(min(6,7,1,0,-2))

# 幂运算  返回 x 的 y 次幂
 print(pow(2,3))

# 四舍五入
 r = round(3.1415926)
 r = round(3.1415926,2) # 小数点保留几位

 r = round(4.5) # 奇进偶退  1.5 = 2 2.5=2,3.5=4,4.5=4
 print(r)

进制相关函数

# bin() 将数值类型转为二进制
print(bin(123)) # 0b1111011

# int() 将二进制转为整型
 print(int(0b1111011)) #1 23

# oct() 转为八进制数 01234567
 print(oct(123)) # 0o173

# hex() 转为十六进制数 0123456789abcdef
 print(hex(123)) # 0x7b
# 将字符转为 ascii
r = ord('a')
print(r)

# 将ascii转为字符
r = chr(65)
print(r)

高阶函数

sorted(iterable,[reverse,key])

把可迭代数据里面的元素,一个一个的取出来,放到key这个函数中进行处理,并按照函数中return的结果进行排序,返回一个新的列表

功能: 排序

参数:

   iterable 可迭代的数据 (容器类型数据,range数据序列,迭代器)
    reverse  可选,是否反转,默认为False,不反转, True反转
    key      可选, 函数,可以是自定义函数,也可以是内置函数

返回值: 排序后的结果

arr = [3,7,1,-9,20,10]

默认按照从小到大的方式进行排序

 res = sorted(arr)  # [-9, 1, 3, 7, 10, 20]

 可以按照从大到小的方式进行排序

 res = sorted(arr,reverse=True)  # [20, 10, 7, 3, 1, -9]

使用abs这个函数(求绝对值)作为sortedkey关键字参数使用

res = sorted(arr,key=abs)
 print(res)

使用自定义函数

 def func(num):
     print(num,num % 2)
     return num % 2

 arr = [3,2,4,6,5,7,9]

sorted函数中使用自定义函数对数据进行处理

res = sorted(arr,key=func)
 print(res)

# 优化版
arr = [3,2,4,6,5,7,9]
res = sorted(arr,key=lambda x:x%2)
print(res)

map(func, *iterables)

对传入的可迭代数据中的每个元素放入到函数中进行处理,返回一个新的迭代器

参数:

   func 函数  自定义函数|内置函数
    iterables:可迭代的数据

返回值:迭代器

1)把一个字符串数字的列表转为 整型的数字列表

# ['1','2','3','4']  # ==> [1,2,3,4]
# 普通的处理方法
 varlist = ['1','2','3','4']  # ==> [1,2,3,4]
 newlist = []
 for i in varlist:
     newlist.append(int(i))
 print(newlist)

 使用map函数进行处理

 varlist = ['1','2','3','4']
 res = map(int,varlist) # <map object at 0x104ea8890>
 print(list(res))

 (2) [1,2,3,4] ==> [1,4,9,16]

普通方法

 varlist = [1,2,3,4]
 newlist = []
 for i in varlist:
     res = i ** 2
     newlist.append(res)
 print(newlist)

使用map函数处理这个数据

varlist = [1,2,3,4]
 def myfunc(x):
     return x ** 2
 res = map(myfunc,varlist)
 print(res,list(res))

优化版

 res = map(lambda x:x**2,varlist)
 print(res,list(res))

练习作业

 ['a','b','c','d'] ==> [65,66,67,68]

reduce(func,iterable)

每一次从 iterable 拿出两个元素,放入到func函数中进行处理,得出一个计算结果,然后把这个计算结果和iterable中的第三个元素,放入到func函数中继续运算,得出的结果和之后的第四个元素,加入到func函数中进行处理,以此类推,直到最后的元素都参与了运算

参数:
    func: 内置函数或自定义函数
    iterable: 可迭代的数据
返回值:最终的运算处理结果

注意: 使用 reduce函数时,需要导入 from functools import reduce

from functools import reduce

(1) [5,2,1,1] ==> 5211

普通方法

varlist = [5,2,1,1]
res = ''
for i in varlist:
    res += str(i)
res = int(res)
print(res,type(res))
'''
5 2 1 1
5 * 10 + 2 == 52
52 * 10 + 1 == 521
521 * 10 + 1 == 5211
'''

使用 reduce完成

def myfunc(x,y):
    return x*10+y
varlist = [5,2,1,1]

调用函数

res = reduce(myfunc,varlist)
print(res,type(res))

2) 把字符串的 '456' ==> 456

要求不能使用int方法进行类型的转换时,如何解决上面的问题

定义函数,给定一个字符串的数字,返回一个整型的数字

def myfunc(s):
    vardict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
    return vardict[s]

先使用 map函数,把数字字符串,转为整型的数字

iter1 = map(myfunc,'456')

把数字列表中的值,使用lambda进行二次处理

iter2 = reduce(lambda x,y:x*10+y,iter1)
print(iter2)

filter(func,iterable)

过滤数据,把 iterable 中的每个元素拿到 func 函数中进行处理,如果函数返回True则保留这个数据,返回False则丢弃这个数据

参数:
    func  自定义函数
    itereble: 可迭代的数据
返回值:保留下来的数据组成的 迭代器

 要求 保留所有的偶数,丢弃所有的奇数

varlist = [1,2,3,4,5,6,7,8,9]

普通方法实现

 newlist = []
 for i in varlist:
     if i % 2 == 0:
         newlist.append(i)
 print(newlist)

使用 filter 进行处理

 定义一个函数,判断当前这个函数是否为偶数,偶数返回True,奇数返回False

 def myfunc(n):
     if n % 2 == 0:
         return True
     else:
         return False

调用 过滤器 函数进行处理

 it = filter(myfunc,varlist)
 print(it,list(it))

优化版

it = filter(lambda n:True if n % 2 == 0 else False,varlist)
print(it,list(it))
(0)

相关推荐

  • Python内置函数详谈

    这种图皆取自python.org,列出了python3.10中的内置函数. 但是,这些真的都是函数吗? 我们来测试一下: import types import inspect lst = dir(__builtins__) for name in lst: print(name, eval(f'type({name})')) lst获得的都是__builtins__模块中内容的名称,也就是说lst是一个由字符串组成的列表.但是每个字符串所代表的内容可各有含义.比如"sum"字符串所代

  • Python 内置函数之随机函数详情

    目录 导入模块: import random 1.random.choice(列表/元组/字符串) ,在列表或者元组中随机挑选一个元素,若是字符串则随机挑选一个字符 num1 = random.choice(['hello',True,1,[1,4,5]]) print(num1) 输出(每次输出的结果不一定一样): 1 2.random.randrange([start,end),step) : 返回一个从[start,end)并且步长为step的一个随机数 若start不写,默认为0 多st

  • python基础之内置函数

    https://docs.python.org/3/library/function.html #python官方网址 # 取绝对值 print(abs(-34)) # 取参数的近似值,精度与版本有关 print(round(3.66)) # 求次方 print(3**5) print(pow(3,5)) #求3的5次方 # max求最大值 print(max([23,123,13455,14664345,243565])) # eval 执行表达式 a,b,c=1,2,3 print('动态执

  • python高级内置函数用法实例

    1.enumerate返回针对序列类型的可迭代对象的枚举对象. 2.eval取出字符串中的内容. 将str中有效的表达式返回计算结果. 3.exec运行编译后的字符串. 4.filter过滤器筛选出想要的对象. 实例 list1 = [1,'ok',3,'kkk'] s = enumerate(list1) print(s)#<enumerate object at 0x000002D2CC666DB8>生成一个枚举对象 for i in s: print(i) #(0, 1) # (1, '

  • python 内置函数-range()+zip()+sorted()+map()+reduce()+filter()

    目录 range函数 zip() 函数 其它内置函数 数据类型转换相关内置函数 变量相关函数 数学相关函数 进制相关函数 高阶函数 sorted(iterable,[reverse,key]) map(func, *iterables) reduce(func,iterable) filter(func,iterable) range函数 能够生成一个指定的数字序列 使用案例: ''' range(start,stop,step) 参数: start : 开始的值 ,默认值为0 stop : 结

  • python内置函数:lambda、map、filter简单介绍

    lambda lambda可以理解为一种小函数,但是它是一个表达式,而不是一个语句,所以在def不允许出现的地方仍然可以使用lambda函数,例如list里.但是lambda内只可以执行一个表达式. def f(x): return x**2 print f(3) a = lambda x: x**2 print a(3) a = lambda x,y: x+y print a(1,2) ~ 一个lambda语句就相当于一个函数定义,调用的时候也和函数一样. map函数 有时候我们可以需要处理一

  • Python内置函数zip map filter的使用详解

    并行遍历zip zip会取得一个或多个序理为参数,然后返回元组的列表,将这些序列中的并排的元素配成对. L1=[1,2,3,4] L2=[5,6,7,8] L3=zip(L1,L2) print(L3,type(L3)) <zip object at 0x7feb81b17f08> <class 'zip'> zip在python3中是一个可迭代对象,我们可以将其包含在list调用中以例一次性显示所有结果 list(L3) [(1, 5), (2, 6), (3, 7), (4,

  • python内置函数sorted()用法深入分析

    本文实例讲述了python内置函数sorted()用法.分享给大家供大家参考,具体如下: 列表对象提供了sort()方法支持原地排序,而内置函数sorted()不支持原地操作只是返回新的列表,并不对原列表进行任何修改.sorted()方法可以对列表.元组.字典.range对象等进行排序.列表的sort()方法和内置函数sorted()都支持key参数实现复杂排序要求. #使用key来指定排序依据,先按姓名升序排序,姓名相同的按年龄降序排序 >>> persons = [{'name':'

  • Python 内置函数sorted()的用法

    对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的.主要的区别在于,list.sort()是对已经存在的列表进行操作,进而可以改变进行操作的列表.而内建函数sorted返回的是一个新的list,而不是在原来的基础上进行的操作. 再来,让我们用Python自带的帮助函数help()看看对于sorted()是怎么定义的:  >>>help(sor

  • 基于python内置函数与匿名函数详解

    内置函数 Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open() str() bool() exec() isinstance() pow() super

  • Python 内置函数速查表一览

    如下所示: 函数 功能 abs(x) 返回一个数的绝对值. 参数可以是一个整数或浮点数. 如果参数是一个复数,则返回它的模. all(iterable) 如果 iterable 的所有元素为真(或迭代器为空),返回 True any(iterable) 如果 iterable 的任一元素为真则返回 True. 如果迭代器为空,返回 False ascii(object) 返回一个表示对象的字符串 bin(x) 将一个整数转变为一个前缀为"0b"的二进制字符串 bool([x]) 返回一

  • 10个必须要掌握的Python内置函数

    目录 内置函数简介 1.input 2.enumerate() 3.eval() 4.format() 5.map() 6.print() 7.range() 8.reversed() 9.sorted() 10.zip() 大家好,对于Python内置函数,在心里想一下:什么是Python内置函数呢? 内置函数简介 Python 解释器自带的函数叫做 内置函数,这些函数不需要import 导入就可以直接使用. 这是为什么呢? 其实你应该知道,运行Python代码需要一个叫做 Python解释器

  • Python内置函数reversed()用法分析

    本文实例讲述了Python内置函数reversed()用法.分享给大家供大家参考,具体如下: reversed()函数是返回序列seq的反向访问的迭代器.参数可以是列表,元组,字符串,不改变原对象. 1>参数是列表 >>> l=[1,2,3,4,5] >>> ll=reversed(l) >>> l [1, 2, 3, 4, 5] >>> ll <listreverseiterator object at 0x06A9E9

  • Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns

随机推荐