首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

017:为什么建议在循环使用“+”拼接字符串

如果要使用循环构建一个大的字符串,推荐使用StringBuilder代替String,使用StringBuilder的append()方法进行字符串连接,并在循环结束后将StringBuilder对象转为...StringBuilder的原理是预先分配了一个足够大小的缓冲区,然后循环的过程就是往缓冲区里填充数据,比使用“+”做字符串连接的效率要高很多。...知识点梳理 上面的答案是理论知识,这里看下实际案例,假设有如下代码,循环10000次将随机长度80的字符串连接为一个大的字符串,使用“+”和使用StringBuilder的方法之间的差距是两个数量级(我的环境...,可以看出,在第4行(循环体外)就构建好了StringBuilder对象,然后再循环体内只进行append()方法的调用。...这就从字节码层面解释了为什么建议在循环体内使用“+”执行字符串的拼接。 参考资料 《Effective Java(第二版)》 《Java编程思想》

1.2K10

Java 中为什么推荐在 while 循环使用 sleep()

前言最近逛 CSDN 看到一篇文章,文章大意是说为什么循环推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大的性能消耗,并推荐使用 Timer 及 ScheduledExecutorService...sleep 可能会导致忙等待 // 如 FLAG 变量状态未改变 那么线程可能一直循环,并不断进行线程挂起和唤醒原因是否正确主要原因和原文博主所说有很大的关系但不完全正确:我们都知道 Java 线程实际对应着操作系统中的一个线程...比如微服务体系中,客户端上报实例状态,或者服务端检测客户端状态都会使用定时轮询的机制。...在 Java AQS 等待获取锁和线程池任务为空等待新任务时,会使用等待和唤醒操作轮询机制 和 等待和唤醒 一般会结合使用,避免线程频繁的挂起和唤醒。...我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。 保持关注我的博客,让我们共同追求技术卓越。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

72130
您找到你想要的搜索结果了吗?
是的
没有找到

收藏 | 10个数据科学家常犯的编程错误(附解决方案)

以下是我经常看到的10大常见错误,本文将为你相关解决方案: 共享代码中引用的数据 对无法访问的路径进行硬编码 将代码与数据混合 在Git中和源码一起提交数据 编写函数而不是DAG 写for循环 编写单元测试...写代码说明文档 将数据保存为csv或pickle文件 使用jupyter notebook 1....在Git中和源码一起提交数据 现在,大多数人对他们的代码使用版本控制(如果你不使用,那就是另外一个错误,请参阅git:https://git-scm.com/)。...写代码说明文档 我明白,你急着做出一些分析结果。你把事情汇总到一起分析,将结果交给你的客户或老板。一个星期之后,他们回来说,“可以把XXX改一下吗”或者“可以更新一下这里吗”。...就像函数和for循环一样,CSV和pickle文件很常用,但是并不好用。CSV文件包含纲要(schema),因此每个人都必须再次解析数字和日期。

80330

独家 | 10个数据科学家常犯的编程错误(附解决方案)

以下是我经常看到的10大常见错误,本文将为你相关解决方案: 共享代码中引用的数据 对无法访问的路径进行硬编码 将代码与数据混合 在Git中和源码一起提交数据 编写函数而不是DAG 写for循环 编写单元测试...写代码说明文档 将数据保存为csv或pickle文件 使用jupyter notebook 1....在Git中和源码一起提交数据 现在,大多数人对他们的代码使用版本控制(如果你不使用,那就是另外一个错误,请参阅git:https://git-scm.com/)。...写代码说明文档 我明白,你急着做出一些分析结果。你把事情汇总到一起分析,将结果交给你的客户或老板。一个星期之后,他们回来说,“可以把XXX改一下吗”或者“可以更新一下这里吗”。...就像函数和for循环一样,CSV和pickle文件很常用,但是并不好用。CSV文件包含纲要(schema),因此每个人都必须再次解析数字和日期。

84120

数据分析 | Numpy进阶

为什么是这样的?...因为Numpy设计初衷就是处理大数据,所以可以想象一下,假如Numpy坚持要将数据复制来复制去的话会产生性能与内存等问题. tips:如果想得到ndarray切片的一份副本而非视图,就需要显示地进行复制操作...运算和数据处理 Numpy数组使你可以将许多种数据处理任务表述为简洁的数据表达式,否则需要编写循环,用数组表达式代替循环的做法通常称为失量化.失量化的运算比普通的Python运算更快. ?...见下章公式 最后 关于Numpy教程当前就做到这里,我下一篇会把整个知识点做一个知识网络图,以上只是Numpy的部分使用,如果单纯演示公式,意义不大。下一章,我把所有的公式补上,方便查阅....再下一篇是关于Pandas的教程,Numpy深入部分先放一下,等把Pandas教程做完再补上,因为Pandas是对Numpy的进一步补充,等等大家熟悉了Pandas再回头看Numpy高级部分更容易理解.

1.7K10

数据科学家常遇到的10个错误

将数据与代码混合 由于数据科学代码需要数据,为什么不将其存储到同一目录?当您使用它时,也可以在其中保存图像,日志和其他垃圾文件。...使用d6tflow或airflow。 6. 循环 和函数一样,for循环是在学习编码时首先要学习的东西。它们易于理解,但它们速度慢且过于冗长,通常表示您不知道有向量化的替代方案。...解决方案:使用assert语句检查数据。pandas有相等测试,d6tstack有数据摄取和检查,d6tjoin数据连接。...记录代码 我明白你着急进行一些分析。您可以一起努力取得成果给客户或老板。然后一个星期后,他们说“请您更新此内容”。您看着您的代码,不记得为什么要这么做。现在想象其他人需要运行它。...就像函数和for循环一样,通常使用CSV和pickle文件,但它们实际上并不是很好。CSV包含架构,因此每个人都必须再次解析数字和日期。

76620

Pandas数据处理与分析高级案例详解

为什么写着写着就这么多if else了,要怎么解决? 这API多得离谱,函数看得头晕!...这个名字就很能体现他的怨念和愿景:原先学习使用pandas真的是极其痛苦(Painful),现在要结束这种痛苦,是时候使用这个新的教程让pandas的学习过程变得快乐(Joyful)了!...▲ 教程内容概览 当然,想要达到“所写所得即所想”的地步,实践是必不可少的,光说练假把式,只有自己身体力行地去做,才能真正得到快乐的学习体验。...他和编辑长时间、多次对图书稿件进行修改,最终稿也终于定下来,图书马上就能与我们见面了。 图书里面有着上千段短小精悍的代码,输入输出成对出现,非常直观地展示了当前知识点的作用,我们一眼就能看清楚。...▲ “练一练”示例 加上新增的习题内容,从整体上连成一条线,把章节内容串在一起,从看到学,从理解到实践,达到融会贯通的效果。 ▲ “习题”示例 当然,只出题不给答案是耍流氓。

1K20

vba新姿势,如何让vba的数据处理超越Python

为什么python比vba更适合自动化处理Excel数据? 但是,vba 真的就不能做到"封装固定逻辑的同时,给予使用者放入自定义逻辑" 吗?...红框是本需求的关键逻辑 注意了,他是在固定逻辑的循环里面 当然也可以先排序,遍历判断边界。...问题是排序只能对单元格区域,很多时候需求不是直接排序,或希望改变原数据,这就导致你需要先输出单元格,排序后再放入数组,多了一些与分组没关联的操作 关键是,与需求相关的核心逻辑,是上图红框部分,就那么一小段的代码...---- 需求2:按 "性别"、"船舱等级",把数据拆分到不同的工作表,工作表名字使用"性别(值),船舱等级(值)" 先看 pandas : 再看vba: 与之前需求变动非常少,因为本身需求表达变动也不多...---- 不仅仅只是分组 "你没有超越 pandas 呢!" 额,是的,毕竟我只是用了几十分钟做的小模块,自然不能与人家整个社区做了几十年的积累相比。

3K10

6个pandas新手容易犯的错误

使用pandas自带的函数读取大文件 第一个错误与实际使用Pandas完成某些任务有关。具体来说我们在实际处理表格的数据集都非常庞大。使用pandas的read_csv读取大文件将是你最大的错误。...似乎在使用 Pandas 时坚持这个“无循环”规则是加速计算的最佳方法。 函数式编程用递归代替循环。虽然递归也会出现各种问题(这个我们这里不考虑),但是对于科学计算来说使用矢量化是最好的选择!...np.log(col1 ** 10 / col2 ** 9 + np.sqrt(col3 ** 3)) 首先,我们将这个函数与 Pandas 最快的迭代器——apply 一起使用: %time tps_october...当我们将df保存到csv文件时,这种内存消耗的减少会丢失因为csv还是以字符串的形式保存的,但是如果使用pickle保存那就没问题了。 为什么要减小内存占用呢?...设置样式 Pandas 最美妙的功能之一是它能够在显示DF时设定不同的样式,在 Jupyter 中将原始DF呈现为带有一些 CSS HTML 表格。

1.6K20

数据分析利器 pandas 系列教程(六):合并上百万个 csv 文件,如何提速上百倍

官方已经推荐使用 append 来连接 dataframe 了,转而使用 concat,即 all_df = pd.concat([all_df,df], ignore_index=True) 但是这不是今天讨论的重点...最开始我为什么要设计成 for 循环中读一个 csv 就合并一次呢,因为我觉得读取全部文件到内存中再合并非常吃内存,设计成这样保存每次只有一个两个 dataframe 即 df 和 all_df 驻留在内存中...假如需要合并的几十万上百万个文件累计有几十 G 大小,即使可能会有虚拟内存加持,还是建议手中持有 32G 或者 64G 内存电脑,方可与之一战 不是很久的以前,我还在学 Java 的时候,听闻江湖中流传着阿里人的 Java 内功心法:为什么阿里巴巴建议在...for 循环使用"+"进行字符串拼接; 我觉得今天的推送和这个心法有异曲同工之妙,我愿改个标题:为什么BuyiXiao 建议在 for 循环使用 append 或者 concat 进行 dataframe...拼接 或者更干脆些:为什么 BuyiXiao 建议在 for 循环中进行 dataframe 拼接。

40720

Python数据分析之旅: 前戏

为什么要学习数据分析 如今我们正处于一个DT时代(data time) , 对海量数据分析处理有利于我们做出正确决策. 3....绘图:matplotlib 这是最流行的用于绘制数据图表的Python库,能与Python很好的结合,因而提供了一种非常好用的交互式数据绘图环境,绘制的图表也是交互式的. 6....学习环境 这里主要介绍两个IDE环境Pycharm和Jupyter,其实这两个IDE有各种的好处,看大家喜欢用那个环境了,我们系统教程会穿插两个IDE一起来学习 Pycharm 学习环境我们继续使用Pycharm...来学习Python数据分析,在这里我们首先去安装三个库Numpy,Pandas,MapPlotlib三个库,怎么安装,自行百度!...为什么会选用Pycharm来做数据分析呢,主要是前面我们都是用这个工具,对这个工具比较熟悉,另外这个工具也比较人性化,完全能满足我们学习的需求.

45650

还在抱怨pandas运行速度慢?这几个方法会颠覆你的看法

将datetime数据与时间序列一起使用的优点 进行批量计算的最有效途径 通过HDFStore存储数据节省时间 ▍使用Datetime数据节省时间 我们来看一个例子。...相反,如果原始数据datetime已经是 ISO 8601 格式了,那么pandas就可以立即使用最快速的方法来解析日期。这也就是为什么提前设置好格式format可以提升这么多。...▍矢量化操作:使用.isin()选择数据 什么是矢量化操作?如果你基于一些条件,而是可以在一行代码中将所有电力消耗数据应用于该价格(df ['energy_kwh'] * 28),类似这种。...使用向量化操作:没有for循环Pandas方法和函数。 2. 将.apply方法:与可调用方法一起使用。 3....▍使用HDFStore防止重新处理 现在你已经了解了Pandas中的加速数据流程,接着让我们探讨如何避免与最近集成到Pandas中的HDFStore一起重新处理时间。

3.4K10

这几个方法颠覆你对Pandas缓慢的观念!

将datetime数据与时间序列一起使用的优点 进行批量计算的最有效途径 通过HDFStore存储数据节省时间 ▍使用Datetime数据节省时间 我们来看一个例子。...相反,如果原始数据datetime已经是 ISO 8601 格式了,那么pandas就可以立即使用最快速的方法来解析日期。这也就是为什么提前设置好格式format可以提升这么多。...▍矢量化操作:使用.isin()选择数据 什么是矢量化操作?如果你基于一些条件,而是可以在一行代码中将所有电力消耗数据应用于该价格(df ['energy_kwh'] * 28),类似这种。...使用向量化操作:没有for循环Pandas方法和函数。 2. 将.apply方法:与可调用方法一起使用。 3....▍使用HDFStore防止重新处理 现在你已经了解了Pandas中的加速数据流程,接着让我们探讨如何避免与最近集成到Pandas中的HDFStore一起重新处理时间。

2.9K20

懂Excel轻松入门Python数据分析包pandas(二十七):按条件选择,就是这么简单

后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas numpy.where 方法 Excel 函数中有一个初学者都能马上学会的函数——IF 函数,而在 pandas...由于需要使用 numpy 的方法,因此代码的开始需要导入 numpy 包: import pandas as pd import numpy as np ---- 场景 如下学生成绩表: 高于等于...甚至 if、for 循环都很少用到了。 在 pandas 中其实也可以选择用 Python 的基本语法处理。...if x >= 60: return '是' return '否' df['res'] = df.成绩.apply(ap_where) df 但是,上述代码的执行性能与直接使用...numpy 或 pandas 内置方法,会差上几十上百倍 ---- 总结 本文重点: numpy.where 函数的使用方式与 Excel 的 IF 函数一致

76930

直接请教pandas比gpt还好用

前言 说到 python 读取 excel 文件,网上使用 openpyxl 的文章一大堆。我自己很少直接使用 openpyxl,一般使用 pandas 间接使用。...但如果你希望引入 pandas,该如何轻松使用 openpyxl?到底有没有最佳实践写法? 这好办,今天就带大家看看 pandas 里面,是如何使用 openpyxl 读取 excel 文件。...使用任何能导航代码的 ide,我使用的是 vscode ,输入 pandas 的 read_excel 方法,按住 ctrl 键,鼠标点击方法,即可进入源码文件。...到底 pandas 是如何组织代码?代码中一些奇怪的操作,是为什么?我们一一拆解。 行 612 是什么鬼?通过查 openpyxl 的文档,可以知道,原来有些程序(wps?)...此时如果只是正常遍历读取,得到的结果是 所以 while 循环就是移除这些多余的空单元格 如果这种"假单元格"出现在数据行下方: 此时就多了许多空行 所以,pandas 在遍历过程中,记录了最后有记录的行索引

24810

pandas(series和读取外部数据)

参考链接: Pandas的数据Series 一、pandas概述  1、pandas介绍   pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。...panel data是经济学中关于多维数据集的一个术语,在Pandas中也提供了panel的数据类型。  2、为什么引入pandas?   numpy能够帮助处理数值型数据,但是这还远远满足不了需求。...很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。   Panel :三维的数组,可以理解为DataFrame的容器。   ...range(10)]) print(t) print(type(t))  (2)通过字典创建   pd.Series(字典)   ——>使用字典中原数据的键值  import pandas as pd...中的where是输出匹配项,匹配的直接赋值为nan  import pandas as pd import string a = {string.ascii_uppercase[i]:i for i

1.1K00

数据城堡参赛代码实战篇(三)---我们来探究一个深奥的问题!

'> 0 id str 0 0 abc 1 0 bcd 1 id str 2 1...为什么会这样呢,这是因为前文所提到的DataFrameGroupBy对象是一个二元元组,由分组名(此处即id值)和数据块组成,因此在迭代的时候我们要指定两个参数,分别获取分组名和数据块,从而顺利完成遍历...我们再来回顾一下上面的代码: df2=df.groupby(['id']).apply(lambda x:' '.join(x['str'])) 分组之后为什么直接作用于一个lambda函数上就能得到我们想要的效果呢...然后我们对每一组的数据块通过一个空格进行连接即可,这里值得提醒大家的是当我们通过列名获得DataFrame中一列时,返回的是一个Series对象,它可直接使用join方法进行连接。...在此,特别感谢问题的提问者以及回答者(排名不分先后)@Winfield @self @穆文 小编也是一枚数据挖掘领域的小菜鸟,遇到问题不会是正常的,但是最主要的是一种虚心学习的态度,希望大家能与小编一起共同成长和进步

90350

数据科学家易犯的十大编码错误,你中招了吗?

将数据和代码混在一起 既然数据科学代码需要数据,为什么不将代码和数据存储在同一个目录中呢?但你运行代码时,这个目录中还会存储图像、报告以及其他垃圾文件。乱成一团!...git add data.csv 解决方案:使用问题 1 中提到的工具来存储和共享数据。...写 for 循环 和函数一样,for 循环也是你在学代码时最先学的。这种语句易于理解,但运行很慢且过于冗长,这种情况通常表示你不知道用什么替代向量化。...然后你和自己的代码大眼瞪小眼,既不记得你为什么要这么做,也不记得你做过什么。现在想象一下其他人运行这段代码时的心情。...就像函数和 for 循环一样,CSV 和 pickle 文件也很常用,但它们其实并没有那么好。CSV 包含模式(schema),所以每个人都必须重新解析数字和日期。

53830

数据科学家易犯的十大编码错误,你中招了吗?

将数据和代码混在一起 既然数据科学代码需要数据,为什么不将代码和数据存储在同一个目录中呢?但你运行代码时,这个目录中还会存储图像、报告以及其他垃圾文件。乱成一团!...git add data.csv 解决方案:使用问题 1 中提到的工具来存储和共享数据。...写 for 循环 和函数一样,for 循环也是你在学代码时最先学的。这种语句易于理解,但运行很慢且过于冗长,这种情况通常表示你不知道用什么替代向量化。...然后你和自己的代码大眼瞪小眼,既不记得你为什么要这么做,也不记得你做过什么。现在想象一下其他人运行这段代码时的心情。...就像函数和 for 循环一样,CSV 和 pickle 文件也很常用,但它们其实并没有那么好。CSV 包含模式(schema),所以每个人都必须重新解析数字和日期。

74220

印度小哥的代码被质疑,才是我希望小码匠做到的

(步步为营,你的基础知识扎实是不可以能的,老码农,心机有些深!) 小码匠:嗯,这个不难,你稍等会儿。...# for j in dic.keys(): # if dic[j] == num: # li.append(j) return li 老码农:你为什么不把刚才写的删掉啊...老码农坚决的说:,你必须删掉。我要对你负责。 小码匠:这,留着也没什么吧。 老码农:《代码整洁之道》的书看完了吗? 小码匠:还没看呢。...老码农:你尝试pandas吧,pandas肯定有,这个我用过。 小码匠:这个嘛,好像是有的,我刚学过。我来编吧。...这种艰深命题,需要家长和娃娃一起改变,一起学习,打破旧的思维模式。 从现在开始,从娃娃抓起,从教育入手,培养孩们好奇心和创造力的创新思维。 END

23230
领券