python3a 之 循环与加速(for循环,list 简化,iterrows, enumerate )

news2024/12/28 19:12:08

1.  map 的用法: 替代for循环,辅助加速

map(function, list)

简写

 map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数

[1, 4, 9, 16, 25]

提供了两个列表,对相同位置的列表数据进行相加

>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

[3, 7, 11, 15, 19]

以def写复杂函数

pd.Series(map(lambda x: str(end_date3[x]), list(df1['contract'])))

end_date

df1['contract']

最终结果:

map函数的用法:

def multiply(x):

return (x*x)

def add(x):

return (x+x)

funcs = [multiply, add]

for i in range(5):

    value = map(lambda x: x(i), funcs)

    print(list(value))

# Output:

# [0, 0]

# [1, 2]

# [4, 4]

# [9, 6]

# [16, 8]

2. 制造dict和key

pos_signal = {}

3. 善用if in

        def find_index_constitutes(code):

            key = str(code[0]) + '|' + str(code[1])

            if key in index_htable:

                return index_htable[key]

            else:

                return '其他'

4. 多进程

pool.join 是按顺序输出。

5、 For 循环基本用法

将所有的数据输出:

res=[]

res=pd.DataFrame() 【如果是矩阵】

for i in ... #循环处理文档的每一行

     .........

     line=..... #line为每一行的处理结果

     res.append(line) #如果前面加上res=可能会报错

print(res) #res就是所需要的结果

For 循环的参数:   for i in range( len(X)):

range:(start, stop[, step])  算前不算后

range(10)       

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

range(1, 11)  

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

range(0, 30, 5) 

[0, 5, 10, 15, 20, 25]

size:len(X)

输出行数:x.shape[0]

输出列数:x.shape[1]

将dataframe拼接

result = [] 

for t in dates: 

    result.append(func(t)) 

print (pd.concat(result, axis=1)) 

将list中多个dataframe拼接成dataframe,先append,再concat

for t in dates: 

   expseason2.append(expseason1)

    expseaso3=pd.concat(expseason2,axis=0)

6. 反向循环

for t in reversed(range(col - 1)):

[9876543210]

7. iterrows 循环 :行循环

创造样例数据

import pandas as pd

import numpy as np

df = pd.DataFrame(np.random.randn(2,2), columns = list('AB'))

for x, y in df.iterrows():

print(x)

print(y)

y['A']

8. enumerate 循环: 行列名称

for x, y in df. enumerate():

      print(x)

print(y)

9. list中简化for 循环

重复

date = [1,2,3]

 [x for x in date for i in range(3)]

累加+for简化:

n=index_price.shape[0]

count=[0 for x in range(0,n)]

10. 通过 dict 制造key,搜索双标签对应的值

   index_htable={}    

    for _,row in  idc.iterrows():   #按行循环

        key = str(row[u'股票代码']) + '|' +str(row[u'日期']) #根据不同 的索引重新制作键值

        value = str(row[u'指数代码'])

        if value == '000300.SH':

            value = '沪深300'

        else:

            value = '其他'

        index_htable[key] = value # 对值重新定义索引和名称

    def find_index_constitutes(code):

        key = str(code[0]) + '|' + str(code[1])  

        if key in index_htable:  # 搜寻键对应的值

            print('found key',key,index_htable[key])

            return index_htable[key]

        else:

            return '其他'

11. 使用生成器占用更少资源yield

# generator version

def fibon(n):

    a = b = 1

for i in range(n):

yield a

        a, b = b, a + b

for x in fibon(1000000):

print(x)

用这种方式,我们可以不用担心它会使用大量资源。然而,之前如果我们这样来实现的话,这也许会在计算很大的输入参数时,用尽所有的资源

def fibon(n):

    a = b = 1

    result = []

for i in range(n):

        result.append(a)

        a, b = b, a + b

return result

def generator_function():

for i in range(3):

yield i

使用next() 获取下一个元素。

gen = generator_function()

print(next(gen))

# Output: 0

print(next(gen))

# Output: 1

print(next(gen))

# Output: 2

print(next(gen))

# Output: Traceback (most recent call last):

#            File ""

12. iter: 迭代

my_string = "Yasoob"

my_iter = iter(my_string)

next(my_iter)

# Output: 'Y'

13. reduce

当需要对一个列表进行一些计算并返回结果时,Reduce 是个非常有用的函数。举个例子,当你需要计算一个整数列表的乘积时。通常在 python 中你可能会使用基本的 for 循环来完成这个任务。

from functools import reduce

product = reduce( (lambda x, y: x * y), [1234] )

# Output: 24

14. filter过滤

number_list = range(-55)

less_than_zero = filter(lambda x: x < 0, number_list)

print(list(less_than_zero))  

# Output: [-5, -4, -3, -2, -1]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/600972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做电商数据分析报表做到废?BI平台试过了?

层出不穷的临时分析需求、大量的重复性操作、眨眼流失的时间&#xff0c;那是电商数据分析人员才都懂的感受。每日一问&#xff0c;今天你做电商数据分析报表做到废了吗&#xff1f;怎么改变这种情况&#xff1f;或许BI大数据分析平台可以一试。 BI大数据分析平台&#xff1a;…

activiti和flowable如何迁移到camunda

一、activiti如何迁移到camunda 将 流程引擎Activiti 迁移到工作流平台Camunda 需要考虑以下几个方面&#xff1a; 1、流程定义的兼容性&#xff1a;Camunda 支持 BPMN 2.0 规范&#xff0c;因此 Activiti 定义的流程需要进行检查和调整以确保与 Camunda 兼容。 2、数据库兼容…

什么是ChatGPT,原理是什么?看完这篇还不懂,我直播吃屏!!福利:中文版CHAT GPT镜像纯分享

目录 福利&#xff1a;文末纯分享中文版CHAT GPT镜像&#xff0c;不存在魔法&#xff0c;纯分享免费使用 前言&#xff1a; 1. 概率从何而来&#xff1f; 2、什么是模型 3、类人的任务模型 3、神经网络 4 、机器学习和神经网络的训练 5、神经网络训练的实践与理论 6、嵌…

BGA和QFP有什么区别?引脚设计有哪些方法?

CPU是中央处理器&#xff0c;Central Processing Unit 英文的缩写&#xff0c;电脑中一个最重要&#xff0c;最核心的东西&#xff0c;相当一个人的大脑&#xff0c;是用来思考、分析和计算的。目前市面上比较常见的CPU来自两个品牌&#xff0c;一个是intel公司生产的&#xff…

Layui源码解读之use函数(模块加载)

一、layui.use 用法 layui.use() 函数用于模块加载 layui.use([mods], callback) mods&#xff1a;如果填写(选填)&#xff0c;必须是一个 layui 合法的模块名&#xff08;不能包含目录&#xff09;。 从 layui 2.6 开始&#xff0c;若 mods 不填&#xff0c;只传一个 callbac…

StarRocks案例3: 通过[broadcast] 优化慢SQL

文章目录 一. 问题描述二. 解决方案三. 一些拓展 一. 问题描述 最近在使用StarRocks的时候&#xff0c;发现一个问题 table_a 10W 左右数据&#xff0c;通过where条件过滤数据后 剩下 10行数据。 table_b 5亿左右数据&#xff0c;通过where过滤条件后 剩下 5kw 数据。 table…

java物流快递寄件配送信息管理系统springboot+vue

物流信息管理系统分为管理员功能模块、配送员功能模块和用户功能模块三大部分&#xff0c;下面将对这三大功能模块分别进行介绍。 管理员功能模块&#xff1a;管理员登录后可对系统进行全面管理&#xff0c;管理员登录后主要实现的功能模块包括个人中心、用户管理、配送员管理、…

Deno:下载安装示例和打包为可执行文件

Deno&#xff1a;一个 安全的 JavaScript 和 TypeScript 运行时环境 目录 文档安装DenoHello World将程序打包成可执行程序 文档 官方文档 https://deno.com/manual 安装Deno Deno的解释器是一个可执行的单文件&#xff0c;下载解压即可使用 1、下载Deno 下载地址&#xf…

NFC无源标签协议

1、NFC写图片数据命令 无源NFC接口基于ISO/IEC 14443-3 A类标准&#xff1b; 命令起始地址结束地址数据 11164 67字节,每次写入的命令和地址都是一样的&#xff1b; 第一包数据必须发送该字符串数据"picksmart&M1&H128&W296&S1&C1"&#xff…

【C++】C++ 中的 IO 流

文章目录 一、C语言的输入输出二、什么是流三、C IO 流1、C 标准 IO 流2、C 文件 IO 流 四、stringstream 介绍 一、C语言的输入输出 在C语言中我们使用最频繁的输入输出方式是 scanf () 与 printf()&#xff1a; scanf()&#xff1a;从标准输入设备 (键盘) 读取数据&#xf…

数据库优化之常用的show table status及ALTER TABLE 重建表

文章目录 ⭐️ MySQL优化-碎片优化一、show table status from db_name【 如何判断是否有碎片&#xff1f;】1、碎片查询分析2、产生碎片的原因 二、MySQL 的表空间设置和优化策略【 如何清理碎片&#xff1f;】1、innodb_file_per_table 参数设置为 ON&#xff08;基本上是默认…

从小白到大佬,入门Linux系统收发网络数据包的秘密/

Linux 服务器收到网络数据包&#xff0c;需求经过哪些处置&#xff0c;一步步将数据传给应用进程的呢&#xff1f;应用进程发送数据包时&#xff0c;Linux 又是如何操作将数据包发送进来的呢&#xff1f;今天我们就来聊聊这个话题。 在准备好接纳网络数据包之前&#xff0c;Li…

python---基础小总结

1.常量和布尔值相加 当常量和布尔值相加的时候,如果是True就视为1来和常量相加. 反之,如果是False的话就视为0和常量相加. 但是这样的操作是没有任何意义的! 2.EG:以下情况是会报错的! 3.EG:加不加分号都可以,但是最好不加

相机的格式

图片的格式大体上可以分为yuv格式和RGB格式&#xff0c;以及png,jpg格式&#xff1b; 其中yuv格式对应的摄像头的格式可以是YUYV、UYVV、YVYU、VYUY&#xff1b; rgb格式的图片对应的摄像头格式为RGB,BGR,ARGB8888格式&#xff1b; 一、RGB8888和ARGB8888像素格式如果搞混了…

网站反爬虫策略的分析与研究

随着互联网的发展&#xff0c;爬虫技术也越来越成熟&#xff0c;越来越多的网站开始采取反爬虫策略来保护自己的数据和资源。以下是网站反爬虫策略的分析与研究&#xff1a; IP封禁&#xff1a;网站可以通过封禁某些IP地址来防止爬虫的访问。这种方法比较简单&#xff0c;但是容…

使用ChatGPT设计多选题

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Spring-Retry实现及原理

前言 重试&#xff0c;其实我们其实很多时候都需要的&#xff0c;为了保证容错性&#xff0c;可用性&#xff0c;一致性等。一般用来应对外部系统的一些不可预料的返回、异常等&#xff0c;特别是网络延迟&#xff0c;中断等情况。还有在现在流行的微服务治理框架中&#xff0…

PDF4NET 13.1.0 Crack

PDF4NET 13.1.0 添加对云多边形和云方形注释的支持。 2023 年 6 月 1 日 - 16:50 新版本 特征 PDF4NET 添加了对 Cloud polygon 和 Cloud square 注释的支持。在文本标记注释中添加了对四点的支持。重大变化&#xff1a;重构了圆形、方形、折线和多边形注释的边框。PDF4NET.Ren…

Linux-线程基础

Linux线程基础 一&#xff0c;线程概念什么是线程Linux如何实现的线程 二&#xff0c;页表与虚拟内存虚拟内存多级页表 三&#xff0c;线程的特点线程的优点线程的缺点线程异常线程用途线程与进程比较 四&#xff0c;线程控制创建线程线程终止线程等待线程取消线程分离 五&…

python+vue宠物用品商城网站系统3zy71

依照这一现实为基础&#xff0c;设计一个快捷而又方便的网上宠物管理系统是一项十分重要并且有价值的事情。对于传统的宠物管理控制模型来说&#xff0c;在线宠物管理系统具有许多不可比拟的优势&#xff0c;首先是快速更新宠物分类、宠物信息、热销排行榜、宠物寄养&#xff0…