- 为什么需要迭代器? - 生成器为什么不能重复使用? - Python的动态协议,不一样的迭代实现。...用一个简单例子来说明一下,当前有一个列表,里面装着4个数字,我们需要把数字逐一打印出来。...为什么第二种方法,不需要一个变量 i 来记录当前读取位置呢。 答案是,不管什么方式,其实都需要在遍历过程保持一个状态值,以表示现在遍历到哪个元素。 但是为什么我们平时使用的for循环却不需要呢?...不能重复使用。 真的需要 `__iter__` 才是可迭代对象吗?...小结 - 我们平时经常使用的列表,元组,字典等集合,他们都是可迭代对象。 - 遍历可迭代对象时,实际是从可迭代对象获取一个迭代器进行的。
那我们有没有办法改变呢?...我们往回看变量a只有3个元素,现在取下标5,那肯定是超出范围了 2.4 零不能作为分母:ZeroDivisionError 这个是比较容易理解的 2.5 值错误:ValueError too many...循环语句 例如,如果我们需要将1到10的数字逐一打印出来,当然我们可以写10个print,那就有10行代码,非常啰嗦。这时,我们就有必要引入循环语句了。...For循环: for 循环变量 in 可循环变量: 循环体 循环体需要进行缩进,通常时4个空格 在循环体中可以使用循环变量 可循环变量,例如元组,列表等 4.1 对值进行循环 把1到10打印出来...,那么能不能同时对键值进行循环呢?
可被迭代的数据类型 有哪些数据类型可以被for循环遍历呢? 结论:列表、字典、字符串。用例子说明: 列表 for循环遍历列表数据,可以依次打印出列表中的每一项。 打印循环的次数取决于列表中元素的个数。...^', '郭菊锋' 字典 for循环遍历字典数据,可以依次打印出字典中的每一个键(key)名。...如果不想从0开始呢?我们可以指定从几开始。...那么如果我想迭代字典时,有个变量存放列表中各项所对应的偏移量(索引)呢? 通过range函数的搭配,我们不仅可以迭代整数,还能迭代列表的索引。 于是我就试了下边的写法,但是他报错了。...那么我们想用索引来携带列表时该怎么写呢?
优化图表添加界面 优化仪表盘样式 优化前端代码,去掉冗余项 优化上传背景后,拖动数据,背景消失问题 优化背景可以打印出来 优化圆形雷达图和雷达图自定义颜色 优化雷达图边框设置 优化象形图预览问题 图表增加标题距离顶部距离设置...SQL编写智能页面,可以看到数据源下面的表清单,也可看到选中表的字段 数据源数据库选择增加了mysql5.7+,可适配高版本的mysql数据源 数据源数据库选择增加了PostgreSQL 优化了API参数不能自动解析问题...支持交叉报表 优化上传excel不可用问题 优化数据源为API数据源可以用问题 增加当条数据和多条数据区分 增加报表数据字典 分组支持表头数据循环 图片支持数据库获取,并解析 支持明细表 为什么选择 JimuReport...傻瓜式在线报表设计,一分钟设计一个报表,又简单又强大 支持 ECharts,目前支持28种图表,在线拖拽设计,支持SQL和API两种数据源 支持分组、交叉,合计、表达式等复杂报表 支持打印设计(支持套打、...、销售单、财务报表、合同、监控大屏、旅游数据大屏等 #系统截图 报表设计器(完全在线设计,简单易用) 打印设计(支持套打、背景打印) 数据报表(支持分组、交叉,合计等复杂报表) 图形报表(目前支持
因此也可以这样写: num = 6 if num : print('Hello Python') 输出的结果如下: 可见,把结果打印出来了。 那如果我们把 num 改为空字符串呢?...二、循环语句 1、什么是循环语句 一般编程语言都有循环语句,为什么呢? 那就问一下自己,我们弄程序是为了干什么? 那肯定是为了方便我们工作,优化我们的工作效率啊。...那如果我们把字符串换为字典 dict 呢? 你会发现只打印了字典 dict 中的每一个 key 值。 很多时候,我都是建议大家学到一个新的知识点,都多去尝试。...可以根据我们的例子举一反三,比如上面的 for 循环,试了字符串,字典,那我们之前学的基本数据类型还有什么呢? 不记得可以再返回去看看,可以把所有的基本类型都拿去尝试一下。...不过我们使用的大多数都是 Python 的内置函数。 比如基本每个章节都会出现的 print() 函数。 而现在,我们主要学习的是自定义函数。 各位有没有想过为什么需要函数呢?
每个熟悉python的人都知道,python提供给了我们各种各样原生的数据结构,如list、tuple、set、dict等等。这些形形色色的数据结构为我们程序猿提供了业务支持。...同样我将dict字典的key值设为int类型,这时候字典也变成了固定的排序方式。这是为什么呢? 讲到这里,本蛇需要继续声明set和dict是无序的!别怀疑你的专业知识。...那么为什么出现这种现象呢,答案只需要从底层源码中就能找到。简单来说,就是字典和集合的无序性在python是如何实现的? 字典和集合无序的实现方式是hash表。...那么同样的操作我们放在int类型上呢?...为什么不直接就用set呢。。。Σ( ° △ °|||)︴可别忘了set还带去重呢! 所以!记住set是无序的!也千万别钻int值是有序的这个空子!
那为什么要有 List (列表)呢? 我们用一个例子来说明。 现在有一个团队要出去玩,要先报名。如果用我们之前学过的知识,那么就是用一个字符串变量把他们都记录起来。...我们尝试把他打印出来,看看打印的结果是怎样的。...这里你会问,为什么是 2 ,不是 3 呢? 这是因为在编程世界中,都是从 0 开始的,而不是我们生活习惯中从 1 开始。 所以需要知道第三个是谁? 那就是 name[2] 就可以了。...从例子来看,我们还把 name[0:2] 的结果打印出来了。 从打印结果来看,只打印了第一,第二个元素内容。 这里可能会有疑问? 为什么不是打印前三个啊,不是说 2 就是第 3 个吗?...(字典) 我们知道了怎么创建列表了,回归到一开始提出到的问题,为什么使用字典能让我们很快的找出某个童鞋的电话呢?
然后小日本又派出十个鬼子给叶问, 然后就在边上看热闹, 看叶问能不能打死十个鬼子, 等叶问打死十个鬼子后再继续要鬼子接着打。...先来看同步的情况吧: 这个例子中,我们在上游中打印出当前的request数量,下游什么也不做。...那下游要是调用了request()呢,来看看: 这次在下游中调用了request(10),告诉上游我要打十个,看看运行结果: 果然!...这个数字为什么和我们之前所说的默认的水缸大小一样啊,莫非?...,这也可以解释之前我们为什么说Flowable中默认的水缸大小是128,其实就是这里设置的。
思考一下这几个问题:类对象class1、class2、class3打印的地址分别是什么情况? 为什么class4是元类,class5是根元类? 打印结果 ?...ZBPerson这个类,地址是0x6000034232c0,调试的输出的结果和打印输出的结果一致 用命令x 0x6000034232c0输出的是ZBPerson这个类内存的情况,图上说明了,前八字节指的是isa,为什么呢...报错指出没有这个key,但是上面代码中确实已经添加,那么只是说明添加失败了,为什么呢?...一旦这个类创建完毕,就不能进行修改. MachOView查看类结构 先编译运行项目,然后找到可执行文件 ? ? ? 把这个可执行文件拖到MachOView里,下图显示 ?...那么问题就来了,上面的lldb打印只打印出了instanceMethod方法,那其他两个方法都去哪里了呢? nice~类方法存储在元类中,上面调试的都是类对象的结构,下面的就是类方法的调试 ?
我们再来思考一个问题:如果线程interrupt后,在线程停止运行时打印出来的是true还是false呢?...为什么主线程的优先级是5呢?...这个就是线程抢占不同步的问题(为什么要使用sleep呢?因为打印的数字太少,防止一一个线程给打印完了)。我们再来看看下一个。...我们只存在读的时候都是线程安全的,如果在读的时候存在写,那么可能就会出现线程不安全,所以要保证线程安全,就必须把读写分开,读时不能存在写,写时不能存在读。那么如何保证线程安全呢?...->10 【线程】:Thread-1打印->9 我们发现线程在访问另外一个同步方法的时候,也会被阻塞,只有在第一个线程结束后才打印出结果,而将 add 方法的 synchronized 去掉,第二行就立马打印出来了
为什么有人会问出这样的问题?为什么我可以毫不犹豫的知道 删除反斜杠没有任何不良影响?这就要从 Python 的单引号、双引号、三引号说起了。 在 Python 里面,单引号和双引号的作用是完全一样的。...当我们要定义一个字符串的时候,使用单引号和双引号没有任何区别: # 下面两种写法完全相同 a = 'kingname' b = "kingname" 那在什么情况下应该用单引号,什么情况下应该用双引号呢...那么如果我想定义的字符串里面本来就既有单引号又有双引号怎么办呢?那么我们可以用三单引号。...可以看到,它的字典中,content的值是使用三双引号包起来的,所以,值里面的单引号没有必要加上反斜杠。 大家可能会觉得非常奇怪,上面这些规则,看起来都是显而易见的,怎么可能有人会搞混呢?...那么这段代码最后会打印出什么字符? 如果我们在调试模式,在第10行打一个断点,然后通过Evaluate功能执行代码片段b['sentence'][18],下面的 result又是什么? ?
相信我们都已经通过“Hello World”程序开始了我们的python之旅。...在python中,它可以在一行中完成: print(“Hello World”) 但是,在使用print()函数打印字典、列表或任何其他复杂数据类型时,您是否遇到过这种痛苦呢?...如果解决这个问题呢? Python附带pprint模块,可以让打印任意数据结构更具可读性。 02 pprint是什么? python中的pprint模块负责以合适的格式打印便于阅读的行块。...但通常,如果我们使用python打印一个字典、列表或任何其他复杂的函数,我们会发现读取打印出来的语句是模棱两可的。它包括内置的对象、文件、套接字、类或实例,这些不能用Python常量表示。...我们看到,当tuple1打印使用深度= 6,之后六个椭圆打印的时候是没有更多的数据显示而只使用pprint.pprint(),那么所有的数据显示。
如果你心中的结果跟答案不一样的话,不要慌,首先对于「同步异步」有些了解的可以看出,先打印出100 400肯定是没有毛病的了,问题应该就出在200跟300上,它俩之间300为什么要比200打印的早呢?...「异步跟出场顺序有关系,不同类型的异步跟出场顺序就没关系了」 这就是为什么setTimeout在promise之上,但是200却在300之后打印出来的原因。...先直接记住结果,再去探究为什么,看到这里应该可以回头去做出来之前那个题了,setTimeout是个宏任务,而pormise是个微任务,「微任务要比宏任务执行的要早」,所以先打印出来300后打印200。...其实如果只执行这一段js,到打印那行为止,我们是能打印出来5的,但是「此时此刻」我们是看不见页面上新增的那五段话的。...,有自己独特的micro task queue,这是为什么呢?
人人都能懂的Python基本数据类型 Python变量无需声明(就像一张纸一样), 拿来即用,那么变量使用来干嘛的呢? ?...(在计算机,我们使用内存来限制存放数据的大小), 那么在计算机语言中是怎么样表示的呢?...# 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值 # 例如下面: part = "car" # 我们要把东西拿出来,就用print,打印出来 print(part) >>>(...有整,也有零钱,所以数据也有整数,小数的 # 但是我们统称为数字(Number)类型 # 那么我们要怎么使用变量存储数字呢 num = 200 String(字符串) # 字符串,就像名字一样,一串一串的...) 字典就更容易理解了,你想想语文中的新华字典, 一个字,对应一个偏旁部首, 一个字,对应一个字母 就是由键值对组成的集合 d = {'name': 'Ken','code':1, 'site': 'www.baidu.com
2.为什么会有多种数据类型 比如在玩股票,股票的涨跌是需要数字类型的帮助的,因为它可以进行加减的运算。涨跌都是在这些运算中来完成。 再比如说,人类是通过读文字来理解内容的。...比如打饭,我们排队一个一个的打饭,就是我们为了打饭的目的,需要将打饭的同学排在一起。一个一个处理的类型。...其实,整型在我们的生活中非常常见,人民币有一元,十元,一百元,这些都是整型,其实也是整数。在python中,整数就是整型。 在python里用什么来定义整数呢?...三、内置函数--type 如何才能知道使用的变量到底是哪种类型呢?现在只能通过人眼识别去看出来。如何让计算机告诉我们它是什么类型呢?这个时候就需要内置函数type完成了。...通过这个函数,可以告诉我们,我们使用的是哪种数据类型。那么,它是如何定义的呢?
试着数列中使用其他数值 >>> l = [4,8,0] >>> fun(*l) 4 8 0 #输出 接下来我们试着在数列中放四个数值,调用函数会出现什么情况呢 >>> l = [3,6,9,1] >>>...为什么会发生这种情况呢? 数列’l’含有四个数值.因此,我们试图调用’fun(*l)’,’l’中数值拆开传给函数fun作为位置参数。...‘required_sum=calculate_sum(iargs)’不能这么调用,因为传给’calculate_sum’之前我们需要unpack数值。...不使用’*’将不会unpack数值,也就不能执行想要的动作。...尽管’kwargs’接收键值参数作为一个字典,但你不能传一个字典作为位置参数给’kwargs’.你可以像下面那样调用: >>> fun(1, **{'b':2, 'c':34}) a is 1 We expect
这里我们可以得出以下几个结论: 1.空格就是一个字符//从arr2与arr3打印出来的字符串长度能够得出此结论 2.strlen函数计算字符串长度的方式就是计算字符串里的字符个数 下面衍生出了一个新的问题...,既然他这里字符串的长度就是他的个数,那我能不能将这些字符挨个赋值给字符数组呢?...,他的字符串长度就是字符的个数,但是我们将字符分别赋值给字符数组时,他的字符长度不等于字符的个数,为什么会产生这样的结果呢?...,字符串“abc”打印出来就是abc,但是字符‘a’,'b','c'打印出来却是abc烫烫烫烫蘟bc,为什么会出现这样的结果呢?...空字符串 前面咱们有提到空字符串,那我们不妨监视一下这个空字符串里面有没有字符,如下图所示: 这里我们可以看到空字符串里面原来并不是空无一物,他还是有点东西的,空字符串里面有字符'\0',既然他有东西的话我能不能把它打印出来呢
在我们的学习过程,难免会遇到许多问题。当我们遇到问题时,无论他简单与否,先试着能不能自己解决它,实在不行再去寻找高人求助。...就像你是一位原神萌新,每次打周BOSS的时候都要请其他的满级大佬来帮你打,但是打完之后所有突破材料都被大佬拿走了,你只能混到一点经验值。...众所又周知:我们要判断这个数n是否为素数只需要生成2~n的数字分别判断他们取余数是否为0,只要出现一个,那么这个数就不是素数,就不能打印出来。...printf("%d ", i); } } return 0; } 这里因为生成的数字中只要出现一个,那么这个数就不是素数,就不能打印出来...如果这样解决的话,为什么我还要给它单独拿出来讲呢??
最后结尾的else并不是必需的,一般我们会加上一个else....,也就是说,这里循环从0打印到10,每次循环i被赋的值都会变, 这里从0到10的区间,包括0,但是不包括10.或者这样书写 for i in range(5,10) 上面的range(10)就相当于一个列表...hash再解释为什么快) 例如:dic = {“sb”:[32.4000.ceo],“sb2”:[33,5000,执行官 ]} 字典的好处:可以存贮复杂的信息,可以快速的查询 从字典中取值...print(dict[“sb”])这样就会将sb后面的value打印出来(value存储这sb的信息) key没有顺序,不像列表中的索引(从左到右从0开始)一样有顺序 +——+{补充:字典默认是无序的...keys和.items都可以用for循环打印出来 Print(k,v)可以分别的打印出来这两个变量 直接循环这个字典for k in dict:print(k,dic[k])把k和value