- images
- results
- .gitignore
- 1.1概论.ipynb
- 1.2 环境配置.pdf
- 1.3数据类型.ipynb
- 1.4 人机交互.ipynb
- 1.5 对象与变量.ipynb
- 1.6 编码与命名规范.ipynb
- 2.1 数值类型.ipynb
- 2.2 数值类型转换.ipynb
- 2.3 数值元算.ipynb
- 2.4常用数学运算函数.ipynb
- 2.5 math 模块及其应用.ipynb
- 2.6.1 逻辑值测试.ipynb
- 2.6.2 成员运算.ipynb
- 2.6.3 比较运算.ipynb
- 2.6.4 布尔运算.ipynb
- 2.6.5 运算优先级.ipynb
- 2.ipynb
- 3.1 流程控制结构.ipynb
- 3.3.1 for 循环语句.ipynb
- 3.3.3 rang.ipynb
- 3.3.3 while 循环语句.ipynb
- 3.4 and 3.5 分支结构和条件.ipynb
- 3.6 and 3.7 .ipynb
- 3.9 异常处理.ipynb
- 4 函数和模块化编程.ipynb
- 4.1 函数的定义、调用与返回值.ipynb
- 4.2 函数的参数传递.ipynb
- 4.3 变量的作用域.ipynb
- 4.4 匿名函数.ipynb
- 4.5 递归.ipynb
- 4.6 内置函数.ipynb
- 4.7 模块化程序设计.ipynb
- 5.1 序列通用操作.ipynb
- 5.1.1 索引.ipynb
- 5.1.2 切片.ipynb
- 5.1.3 序列拼接与重复.ipynb
- 5.1.4 成员测试.ipynb
- 5.2.1 字符串的创建.ipynb
- 5.2.2 字符串常量.ipynb
- 5.2.4 字符串的遍历.ipynb
- 5.2.5 文件遍历.ipynb
- 5.2.6 字符串的处理方法.ipynb
- 5.2.7 字符串格式化.ipynb
- 5.2.8 转义字符.ipynb
- 5.3 random 模块及其应用.ipynb
- 6.1 元组.ipynb
- 6.2 列表.ipynb
- 6.2.1 列表的创建.ipynb
- 6.2.2 列表的更新.ipynb
- 6.2.3 列表的删除.ipynb
- 6.2.4 列表的排序.ipynb
- 6.2.5 列表赋值与复制.ipynb
- 6.2.6 列表推导式.ipynb
- 6.2.8 常用内置函数.ipynb
- 6.2.9 列表嵌套及其排序.ipynb
- 6.3 列表综合应用.ipynb
- 7.1.1 集合的创建.ipynb
- 7.1.2可变集合类型的操作.ipynb
- 7.1.3 成员关系.ipynb
- 7.1.4 集合关系.ipynb
- 7.1.5 集合运算.ipynb
- 7.2.1 字典创建.ipynb
- 7.2.2 获取字典值.ipynb
- 7.2.3 修改字典值.ipynb
- 7.2.4内置函数与方法.ipynb
- 7.2.5字典排序输出.ipynb
- 7.3 集合与字典的应用.ipynb
- 8 中 numpy 概述.ipynb
- 8 中panda 库.ipynb
- 8.1 文件的打开与关闭.ipynb
- 8.2 文件读写操作.ipynb
- 8.3 文件的应用.ipynb
- 8.4 numpy 文件操作.ipynb
- 8.4.2 and 3.ipynb
- 8.5.1 pandas文件读写.ipynb
- 8.5.2 and 3 and 4.ipynb
- 9.1 matplotlib 线性图.ipynb
- 9.1.5 数据文化绘图.ipynb
- 9.2 非线性图.ipynb
- 9.3 词云.ipynb
- _overview.md
- _readme.ipynb
- coding_here.ipynb
- dream.png
- score.txt
- score_total.csv
- 成绩分析综合.json
6.2.8 常用内置函数.ipynb @master — view markup · raw · history · blame
常用内置函数¶
Python有很多内置函数可以非常方便的解决一些问题,本节给出其中三个在列表中使用较多的内置函数:
map()
zip()
enumerate()
map()函数可以将函数作用于可迭代对象中的每一个元素,返回一个可迭代对象。常用于将一个序列映射为另一种数据类型的序列。语法如下:
map(function, iterable, ...)
第一个参数是一个函数,如int,float,str等
第二个参数量是一个可迭代对象,如列表等
示例如下所示:
s= ['1','2','3']
print(map(int,s))
# 输出一个可迭代对象 <map object at 0x000002700724EEB8>
print(list(map(int,s))) # 用list()可将其转为列表输出 [1, 2, 3]
print(list(map(float,range(5)))) # 整数序列映射为浮点数序列并转为列表
# 输出[0.0, 1.0, 2.0, 3.0, 4.0]
print(list(map(str,range(5)))) # 整数序列映射为字符串序列并转为列表
# 输出['0', '1', '2', '3', '4']
print('+'.join(map(str,range(5)))) # 整数序列映射为字符串序列并用‘+’连接
# 输出 0+1+2+3+4
print(''.join(map(str,range(5)))) # 整数序列映射为字符串序列并用空字符串连接
# 输出 01234
m,n = map(int,input().split())
# 将在一行中输入的用空格分隔2个数据切分开,转为整型,分别赋值给m,n
print(pow(2,64)) # 结果为数字18446744073709551616
print(str(pow(2,64))) # 结果为字符串'18446744073709551616'
print(map(int,str(pow(2,64))))# 可迭代对象<map object at 0x000001A4A11DEEB8>
print(sum(map(int,str(pow(2,64))))) # 输出2的64次方结果每位上的数加和 88
zip函数可以组合多个可遍历对象,生成一个zip生成器,其语法为:
zip(iter1[, iter2 […]])
iter1、iter2…都是可遍历对象。
采用惰性求值的方式,可以按需要生成一系列元组数据,第i元组数据依次为每个可遍历对象的第i个元素组成的元组,直到所有可遍历对象中最短的元组最后一个元素组成的元组为止。
zip是生成器对象,需要查看其中的数据时,可以用list()函数将其转为列表。
示例如下所示:
x = (1,2,3)
y = (4,5,6,8)
z = zip(x,y) # 惰性求值,生成zip对象,可用list转为列表输出
print(list(z)) # [(1, 4), (2, 5), (3, 6)]
a = [1,2,3] # 列表a最短,生成元组个数与a长度相同,其他列表中多余元素被丢弃
b = [11,22,33,44]
c = [111,222,333,444]
z = zip(a,b,c) # 惰性求值,生成zip对象,可用list转为列表输出
print(list(z)) # [(1, 11, 111), (2, 22, 222), (3, 33, 333)]
enumerate函数可以使用一个可遍历对象生成一个enumerate生成器,其语法为:
enumerate(iter[, start])
iter为可遍历对象,start表示序号的起始值。
其采用惰性求值的方式,可以按需要生成一系列两个元素组成的元组数据,第一个元素是以start为起始的一个整数(默认start值为0),第二个元素则是iter可遍历对象的数据元素。
简单的说,就是生成一个新的可遍历序列,给原来iter的每个值对应的增添了一个序号数据,示例如下所示:
a = ['apple', 'banana', 'cherry']
E = enumerate(a) # 生成enumerate对象
print(list(E)) # [(0, 'apple'), (1, 'banana'), (2, 'cherry')]
for i in a: ##序号,数据
print(i)
可以看出,列表a中的所有数据元素都添加了一个序号,形成一个元组,最后构成了enumerate生成器,其也是惰性求值的方式生成数据。
练一练
实例5.4 蒙特卡洛方法计算圆周率
利用列表推导式和zip()函数,用蒙特卡洛方法计算圆周率。
分析:
random.random()可以生成一个[0.0, 1.0]之间的数,利用列表推导式可以生成一批数据。
利用zip()函数将两组这样的数合并成一组坐标。
再判断其是否落在圆内,根据落在圆内的点的数量与总数量的比值得到面积
再由面积公式便可计算出圆周率的值。
# 利用列表推导式和zip()函数,用蒙特卡洛方法计算圆周率
import random
N = 100000
lsx = [random.random() for i in range(N)] # 列表推导式随机生成N个小数
lsy = [random.random() for i in range(N)] # 列表推导式随机生成N个小数
# 用zip函数将两个列表中对应序号的数据组成N对坐标值,用list()将其转为列表
ls = list(zip(lsx,lsy))
count = 0
for item in ls:
if item[0]**2+item[1]**2<=1: # 判断坐标点是否落在圆内
count=count + 1 # 落在圆内的点数量增加 1
PI = 4 * count/N # 计算圆周率值
print('{:.6f}'.format(PI)) # 输出结果3.141880(每次运行结果可能不同)