python for循环

python中的generator

僤鯓⒐⒋嵵緔 提交于 2019-12-31 22:49:17
读 python进阶 记录 generator和Iterator类似,可以通过for循环来访问所有元素。 不一样的地方在:generator是每次for循环的时候生成(yield)一个元素,而iterator是访问内存中已存在的元素。 generator更加的节省空间。 举个例子: 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) 来源: CSDN 作者: 依旧seven 链接: https://blog.csdn.net/seven08290/article/details/103767222

Python - 排序( 插入, 冒泡, 快速, 二分 )

大城市里の小女人 提交于 2019-12-31 22:09:03
插入排序 算法分析 两次循环, 大循环对队列中的每一个元素拿出来作为小循环的裁定对象 小循环对堆当前循环对象在有序队列中寻找插入的位置 性能参数 空间复杂度  O(1) 时间复杂度  O(n^2) 详细代码解读 import random def func(l): # 外层循环: 对应遍历所有的无序数据 for i in range(1, len(l)): # 备份 取出数据 temp = l[i] # 记录取出来的下标值 pos = i # 内层循环: 对应从后往前扫描所有有序数据 """ i - 1 > 从最后一个有序数据开始, 即无序数据前一位 -1 > 扫描到下标 0 为止, 要包括第一个, 因此设置 -1 往后推一位 -1 > 从后往前扫描 """ for j in range(i - 1, -1, -1): # 若有序数据 大于 取出数据 if l[j] > temp: # 有序数据后移 l[j + 1] = l[j] # 更新数据的插入位置 pos = j # 对应所有有序数据比取出数据大的情况 # 若有序数据 小于/等于 取出数据 else: pos = j + 1 break # 在指定位置插入数据 l[pos] = temp if __name__ == '__main__': l = list(range(1, 13)) random.shuffle(l)

python 找素数

馋奶兔 提交于 2019-12-31 08:21:00
初始版本 没什么好讲的. def getSushu(): res = [2] for i in range(3,100): flag = True for j in range(2,i): if i%j==0: flag = False break if flag: res.append(i) return res print(getSushu()) 1. 找因数找到平方根就可以了 2. for else 的用法 (else 其实是与for里的break形成排他关系) import math # l = [2, 3] for i in range(5, 101): #第一层循环,从5到100 for j in range(2, int(math.sqrt(i))+1): #一个数的最大因数是它的平方根 if i%j == 0: #如果出现整除说明有因子 break else: l.append(i) #for正常执行(包括contine)完会执行else,break不会执行else print(" ".join(map(str, l))) #先将列表中的元素变为字符串再用空格连接输出 来源: https://www.cnblogs.com/ShawSpring/p/10817348.html

Python列表推导式

微笑、不失礼 提交于 2019-12-31 06:27:21
列表推导式 列表推导式使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性。 语法形式为: [expression for expr1 in sequence1 if condition1 for expr2 in sequence2 if condition2 ​ for expr3 in sequence3 if condition3 ​ ... ​ for exprN in sequenceN if conditionN] 列表推导式在逻辑上等价于一个循环语句,只是形式上更加简洁。 例如: aList = [x*x for x in range(10)] 相当于 >>> aList = [] >>> for x in range(10): ​ aList.append(x*x) 实现嵌套列表的平铺 >>> vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] [num for elem in vec for num in elem] [1, 2, 3, 4, 5, 6, 7, 8, 9] 在这个列表推导式中有2个循环,其中第一个循环可以看作是外循环,执行的慢;而第二个循环可以看作是内循环,执行的快。上面代码的执行过程等价于下面的写法: >>> vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>>

Python实现隐马尔可夫模型的前向后向算法

牧云@^-^@ 提交于 2019-12-30 23:57:09
本篇文章对隐马尔可夫模型的前向和后向算法进行了Python实现,并且每种算法都给出了循环和递归两种方式的实现。 文章目录 前向算法Python实现 循环方式 递归方式 后向算法Python实现 循环方式 递归方式 前向算法Python实现 循环方式 import numpy as np def hmm_forward ( Q , V , A , B , pi , T , O , p ) : """ :param Q: 状态集合 :param V: 观测集合 :param A: 状态转移概率矩阵 :param B: 观测概率矩阵 :param pi: 初始概率分布 :param T: 观测序列和状态序列的长度 :param O: 观测序列 :param p: 存储各个状态的前向概率的列表,初始为空 """ for t in range ( T ) : # 计算初值 if t == 0 : for i in range ( len ( Q ) ) : p . append ( pi [ i ] * B [ i , V [ O [ 0 ] ] ] ) # 初值计算完毕后,进行下一时刻的递推运算 else : alpha_t_ = 0 alpha_t_t = [ ] for i in range ( len ( Q ) ) : for j in range ( len ( Q ) ) :

Python基础(四)

岁酱吖の 提交于 2019-12-30 23:25:49
1.字符串 (1)定义 可以使用单引号,双引号,三引号定义字符串. x = '123' x = "123" x = '''123''' x = ''' 123 456 ''' 三引号可以跨行使用. (2)特性 python中的字符串是不可变对象: 字符串也属于序列的一种,支持切片操作: (3)转义 转义一般用于单引号,双引号,斜杠等特殊符号. x = '\\123' x = "\"123\"" 对于用单引号引起的字符串,若含有单引号,可以把外面的单引号改成双引号,对于双引号字符串也类似. 另一种可以不用转义的方法是在字符串前加一个r: (4)常用操作 A.插入连接 使用x.join(a)表示把x插入到a中的每个字符中间: B.去除空白 strip(),去除左右空白字符,包括空格,换行,制表符. C.长度 计算字符串长度,len(x): D.unicode编码 ord():计算unicode编码. chr():与ord()相反,解码. 注意参数是一个字符. 2.序列 (1)序列 序列是列表,元组,字符串等元素之间具有顺序关系的数据类型的统称,不是一个独立的数据类型. (2)特点 A.索引 可以通过索引来获取元素的值: B.切片 形式为: [start:end:step] start为起始位置,包含.end为结束位置,不包含,step为步长,默认为1,三者都可以省略.三者都可以为负数.

Python基础(五)

Deadly 提交于 2019-12-30 23:25:39
1.集合 (1)集合 集合是一种可变的无序的容器. (2)定义 x = {1,2,3} #第一种方法,使用{} x = set([2,4,5]) #第二种方法,使用强制类型转换 (3)特点 A.确定性 类似数学中的集合的确定性,集合描述得很清楚,不存在不能判断一个元素是否在一个集合中,具体来说就是in或not in运算符不会得不到确定的结果. B.无序性 因此不能通过下标访问. subscriptable就是可以通过下标访问的.这里提示"not subscriptable". C.互异性 没有重复元素. D.支持集合运算 包括==,!=,判断子集,真子集,超集,真超集,交集与并集,差集,对称差分. E.可变对象 可以通过add,remove改变集合本身. 另外有不可变集合frozenset: 2.字典 (1)字典 字典是一种可变的无序容器,每个值都有自己对应的键,是一个映射结构,本质上是一个以键为元素的集合. (2)定义 使用{},键与值用:分隔,键值对用逗号分隔. x = {'aa':1,'bb':2,'cc':3} (3)特点 A.可以通过对应的key访问对应的value B.可变对象 (4)用作函数参数 def func(arg1,**arg2): print(arg1) print(arg2) func('a',a=1,b=2,c=3,d=4) 3.迭代器 (1)迭代器

leetcode力扣刷题系列python——1、两数之和

天涯浪子 提交于 2019-12-30 22:49:48
题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 解法: 1、暴力法 两次循环,遍历数组得到nums[ j ] = target - nums[ i ],此方法时间复杂度为O(n^2),在官方测试数据下时间会超标(我连跑了四次时间都超了,遂放弃此法) 1 class Solution: 2 def twoSum(self, nums: List[int], target: int) -> List[int]: 3 for i in range(len(nums)): 4 for j in range(len(nums)): 5 if j > i: 6 if nums[j] == target - nums[i]: 7 return i,j 2、借助字典实现 可以借用哈希(python叫字典),我们遍历元素的时候,且记录元素的下标,当我们找 target-a 时候,只需要在字典找,就可以了,查找字典时间复杂度为O(1) 所以,,时间复杂度:O(n)

Python基础(五)

ぐ巨炮叔叔 提交于 2019-12-30 01:09:50
文章目录 1.集合 (1)集合 (2)定义 (3)特点 A.确定性 B.无序性 C.互异性 D.支持集合运算 E.可变对象 2.字典 (1)字典 (2)定义 (3)特点 A.可以通过对应的key访问对应的value B.可变对象 (4)用作函数参数 3.迭代器 (1)迭代器 (2)可迭代对象 (3)可迭代对象转换为迭代器 4.生成器 (1)生成器 (2)特点 (3)使用 1.集合 (1)集合 集合是一种可变的无序的容器. (2)定义 x = { 1 , 2 , 3 } #第一种方法,使用{} x = set ( [ 2 , 4 , 5 ] ) #第二种方法,使用强制类型转换 (3)特点 A.确定性 类似数学中的集合的确定性,集合描述得很清楚,不存在不能判断一个元素是否在一个集合中,具体来说就是in或not in运算符不会得不到确定的结果. B.无序性 因此不能通过下标访问. subscriptable就是可以通过下标访问的.这里提示"not subscriptable". C.互异性 没有重复元素. D.支持集合运算 包括==,!=,判断子集,真子集,超集,真超集,交集与并集,差集,对称差分. E.可变对象 可以通过add,remove改变集合本身. 另外有不可变集合frozenset: 2.字典 (1)字典 字典是一种可变的无序容器,每个值都有自己对应的键,是一个映射结构

《Python编程:从入门到实践》读书笔记——第7章:用户输入和while循环

回眸只為那壹抹淺笑 提交于 2019-12-29 21:38:41
目录 函数input()的工作原理 编写清晰的程序 使用int()来获取数值输入 求模运算符% while循环 让用户选择何时退出 使用标志 使用break退出循环 在循环中使用continue 避免无限循环 使用while循环来处理列表和字典 在列表之间移动元素 删除包含特定值的所有列表元素 使用用户收入来填充字典 函数input()的工作原理 函数input()让程序暂停运行,等待用户输入一些文本。python将获取的输入存储在一个变量中,方便之后使用。 ** parrot . py ** message = input ( 'Tell me something, and I will repeat it back to you: ' ) print ( message ) 函数input()接受一个参数:即要向用户显示的提示或说明,让用户指导该怎么做。程序将等待用户输入,并在用户按回车键之后继续运行。 编写清晰的程序 在使用input()函数时,首先要保证使用的提示要清晰,易于理解;其次,要在提示的末尾包含一个空格,将提示与用户输入分开;再次,当提示内容超过一行时,可以将提示存在一个变量中,再将该变量传给input()。 ** greeter . py ** prompt = 'If you tell us who you are, we can personalize