python for循环

Python算法学习《一》

戏子无情 提交于 2020-01-07 22:03:17
Python算法学习《一》 给定一个整数数组和一个目标值,找出数组中和为目标值的个两个数 同样的元素不能重复利用 L = [3, 7, 11, 9] T = 10 方法一直接2个循环遍历 def fun(num, target): for i in range(len(num) - 1): for j in range(i + 1, len(num)): if target - num[i] == num[j]: return [i, j] print(fun(L, T)) 结果: [0, 1] 方法二:使用索引,index()函数 def fun(num, target): for i in range(len(num)): if target - num[i] in num: j = num.index(target - num[i]) if i == j: # 同样的元素不能重复利用 continue else: return [i, j] 结果: print(fun(L, T)) [0, 1] 方法三:使用字典储存差值 def fun(num, target): for i in range(len(num)): if num[i] in d: return [d[num[i]], i] # 遍历的元素是否与字典中差值相等, 如果是,那么因数2就找到了,d[差值

python的生成器和迭代器

社会主义新天地 提交于 2020-01-07 18:37:42
一.迭代器 迭代器指的是迭代取值的工具,迭代是指一个重复的过程,每一次重复都是基于上一次结果而来   迭代提供了一种通用的不依赖索引的迭代取值方式   一.可迭代对象     但凡内置有__iter__方法的对象,都称为可迭代对象,可迭代的对象:str,list,tuple,dict,set,文件对象   二.迭代器对象     1既内置又__next__方法的对象,执行该方法可以不依赖索引取值     2.又内置有__iter__方法的对象,执行迭代器的__iter__方法得到的依然是迭代器本身     迭代器一定是可迭代对象,可迭代对象不一定是迭代器对象,文件对象本身就是一个迭代器对象   例如:执行可迭代对象下的__iter__方法,返回一个迭代器对象,在通过迭代器对象的__next__方法取值,如果取值次数超过源值的数量就会报错 执行结果: for循环本质为迭代器循环   工作原理:     1.先调用in后对象的__iter__方法,将其变成一个迭代器对象     2.调用next(迭代器),将得到的返回值赋值给变量名     3.循环往复直到next(迭代器)抛出异常,for会自动捕捉异常然后结束循环   ps:可以从for的角度,分辨但凡可以被for循环取值的对象就是可迭代对象   迭代器优点:     1.提供了一种通用不依赖索引的迭代取值方式     2

Python入门方法推荐,哪些基础知识必学?

让人想犯罪 __ 提交于 2020-01-07 17:23:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 很多想入门的小伙伴还不知道Python应该怎么学,哪些知识必学,今天我们就来盘点一下。 01、入门方法推荐 总体来讲,找一本靠谱的书,由浅入深,边看边练。 网上的学习教程有很多,多到不知道如何选择。所有教程在基础知识介绍方面都差不多,区别在于讲的是否足够细(例如运行原理)以及是否有足够的练习。 目前推荐大家看书《Python编程 从入门到实践》,作者是美国教师,内容从基础知识开始,循序渐进,层层深入,适合零基础者。课程内容第二部分有三个项目实战:外星人入侵、数据可视化、Web应用程序。 不要看很多本,专注于一本,从头到尾看下去,把里面的例子和习题都动手练习一遍,搞懂为什么。编程从一开始就离不开练习,光看是不可能看会的。 只有你在电脑上一行一行的敲代码,才会发现其中没注意到的细节问题,才能有更深刻的理解。缩进、大小写、括号、引号、代码执行的方式等,都是早期学习的坑,切记,不要直接复制代码,一定要手动去敲代码、运行代码。 这个阶段最重要的就是:学好基础知识。掌握了基础之后,便可以开始做项目练习锻炼编程思维了。 核心关键:python实战是检验学习效果的唯一标准,不能懒,如果你缺乏最新python实战教程,去我们的python直播技术扣裙 :八五五-四零八-八九三 02、基础阶段知识点

牛客网Python笔试技巧

霸气de小男生 提交于 2020-01-07 11:57:24
提高通过率大原则: 1.本地IDE调代码的速度更快 2.修改已>0%的代码比新做一道题更快 3.一定要看清题意!!! 提高通过率的技巧: 1.时间复杂度问题:增加条件break或continue出循环,能break尽量break; 减少不必要的判断条件(比如在不在字典中); 做一些排序来减少后期的工作量 2.空间复杂度问题: 3.边界条件:某些数据是不是始终存在 测试用例通过但0%的原因: 1.没有理解题意 输入 第一行说明nmp这种数据量,最后一个参数一般为第二行开始有几行,且是字符型的数据输入,可以按下面的方法进行输入处理。 第一行: a,b,c=[int(i) for i in input(0.solit()] 第二行: info=[] for i in range(c): info.append([int(i) for i in input().split()]) 不用input()的话也可以用sys.stdin.readline().strip() 输出 一般逐行打印 for i in result: print(i) 常用数据结构 list和dict比较好用,不能导入numpy库 list:做整体的排序 dict:做局部的排序,要在单个条件下xxx 常用函数 list min() max() sum() .index() .remove(具体内容) .pop(索引号)

Python十大装B语法

二次信任 提交于 2020-01-07 08:41:10
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才是原配吗?No,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的。十大装B语法,for-else 绝对算得上南无湾!不信,请看: >>> for i in [1,2,3,4]: print(i) else: print(i, '我是else') 1 2 3 4 4 我是else 如果在 for 和 else 之间(循环体内)有第三者 if 插足,也不会影响 for 和 else 的关系。因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍: >>> for i in [1,2,3,4]: if i > 2: print(i) else: print(i, '我是else') 3 4

Python collections 模块用法举例

回眸只為那壹抹淺笑 提交于 2020-01-07 08:22:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Python作为一个“内置电池”的编程语言,标准库里面拥有非常多好用的模块。比如今天想给大家 介绍的 collections 就是一个非常好的例子。 1、 collections模块基本介绍 我们都知道,Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型: 1.namedtuple(): 生成可以使用名字来访问元素内容的tuple子类 2.deque: 双端队列,可以快速的从另外一侧追加和推出对象 3.Counter: 计数器,主要用来计数 4.OrderedDict: 有序字典 5.defaultdict: 带有默认值的字典 1.1 namedtuple() namedtuple主要用来产生可以使用名称来访问元素的数据对象,通常用来增强代码的可读性, 在访问一些tuple类型的数据时尤其好用。 举个栗子: # -*- coding: utf-8 -*- """ 比如我们用户拥有一个这样的数据结构,每一个对象是拥有三个元素的tuple。 使用namedtuple方法就可以方便的通过tuple来生成可读性更高也更好用的数据结构。 """ from collections import

这26个为什么,让初学者理解Python更简单!

柔情痞子 提交于 2020-01-07 04:13:50
为什么Python使用缩进来分组语句? 为什么简单的算术运算得到奇怪的结果? 为什么浮点计算不准确? 为什么Python字符串是不可变的? 为什么必须在方法定义和调用中显式使用“self”? 为什么不能在表达式中赋值? 为什么Python对某些功能(例如list.index())使用方法来实现,而其他功能(例如len(List))使用函数实现? 为什么 join()是一个字符串方法而不是列表或元组方法? 异常有多快? 为什么Python中没有switch或case语句? 难道不能在解释器中模拟线程,而非得依赖特定于操作系统的线程实现吗? 为什么lambda表达式不能包含语句? 可以将Python编译为机器代码,C或其他语言吗? Python如何管理内存? 为什么CPython不使用更传统的垃圾回收方案? CPython退出时为什么不释放所有内存? 为什么有单独的元组和列表数据类型? 列表是如何在CPython中实现的? 字典是如何在CPython中实现的? 为什么字典key必须是不可变的? 为什么 list.sort() 没有返回排序列表? 如何在Python中指定和实施接口规范? 为什么没有goto? 为什么原始字符串(r-strings)不能以反斜杠结尾? 为什么Python没有属性赋值的“with”语句? 为什么 if/while/def/class语句需要冒号?

python学习笔记02——流程控制

淺唱寂寞╮ 提交于 2020-01-06 23:03:24
python学习笔记02 python基础学习,顺便记录一些基本语法以及简单地使用 流程控制 1 if 语句 if ... elif ... elif ... ...... else: else 是可选的 2 for语句 正常的for循环语句是等差数值步进过程;而python中不是,Python 的 for 语句依据任意序列(链表或字符串)中的子项,按它们在序列中的顺序来进行迭代。 3 range()函数 数值序列,使用range()函数生成一个等差级数链表 range(start,end,step) start:起始值,包括 end: 终使值:不包括 step: 步长 for i in range(len(a)): print i, a[i] range和len联合使用 4 pass语句 pass语句什么也不做,它用于那些语法上必须要有什么语句,但程序什么也不做的场合 pass也可以在创建新代码时用来做函数或控制体的占位符。 5 定义函数 关键字def 引入一个函数定义,在其后必须跟有函数名和包括形式参数的圆括号。函数体语句从下一行开始,必须是缩进的。 函数体的第一行语句可以是可选的字符串文本,这个字符串是函数的文档字符串,或者称为 docstring 。 函数调用会为函数局部变量生成一个新的符号表。确切地说,所有函数中的变量赋值都是将值存储在局部符号表。

Python-控制语句及函数

▼魔方 西西 提交于 2020-01-06 21:57:43
if-elif-else for while 函数 函数定义 空函数 pass 返回多个值 可变参数 * 关键字参数 ** 控制语句 if - elif - else 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用 if 语句实现: 1234 age = 20if age >= 18: print('your age is', age) print('adult') 根据Python的缩进规则,如果 if 语句判断是 True ,就把缩进的两行print语句执行了,否则,什么也不做。 也可以给 if 添加一个 else 语句,意思是,如果 if 判断是 False ,不要执行 if 的内容,去把 else 执行了: 1234567 age = 3if age >= 18: print('your age is', age) print('adult')else: print('your age is', age) print('teenager') 注意不要少写了冒号 : 。 当然上面的判断是很粗略的,完全可以用 elif 做更细致的判断: 1234567 age = 3if age >= 18: print('adult')elif age >= 6: print('teenager')else: print('kid') elif 是 else if

python enumerate用法总结

元气小坏坏 提交于 2020-01-06 21:57:16
enumerate()说明 enumerate()是python的内置函数 enumerate在字典上是枚举、列举的意思 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 enumerate多用于在for循环中得到计数 例如对于一个seq,得到: (0, seq[0]), (1, seq[1]), (2, seq[2]) enumerate()返回的是一个enumerate对象,例如: enumerate()使用 如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写: list1 = ["这", "是", "一个", "测试"] for i in range (len(list1)): print i ,list1[i] 上述方法有些累赘,利用enumerate()会更加直接和优美: list1 = ["这", "是", "一个", "测试"] for index, item in enumerate(list1): print index, item >>> 0 这 1 是 2 一个 3 测试 enumerate还可以接收第二个参数,用于指定索引起始值,如: list1 = ["这", "是", "一个", "测试"] for index, item in enumerate(list1