Python中的可迭代对象、迭代器、For循环工作机制、生成器

梦幻python 2021-11-25 17:24:42
Python 循环 对象 迭代

首先,我们要分清楚一些概念和他们之间的关系

数组(array) 表(list) 链表(linked list) 数组链表(array list) 队列(queue) 栈(stack)

image

list列表

array数组

python中内置list数据结构 存放的数据类型可以不同。

但是有个缺点 list存放的是数据的索引也就是指针 这需要数据的原有存储加上数据的指针 增加了消耗。

python中numpy库的array 存放单一类型数据 。

python中数组并不是基本数据类型 但是可以调用array库 或者numpy库使用数组array 。

array库只能创建一维数组 numpy中的数组适用性非常广 建议使用numpy。

1 import array
2 arr=array.array('i',[1,2,3,4]) #创建数组
3 print(arr,type(arr))

相互转换

1 import numpy as np
2 arr=np.array([1,2,3,4]) #创建数组
3 li=arr.tolist() #数组转换为列表
4 new_arr=np.array(li) #列表转数组
5 print(arr,type(arr))
6 print(li,type(li))
7 print(new_arr,type(new_arr))
#输出
[1 2 3 4] <class 'numpy.ndarray'>
[1, 2, 3, 4] <class 'list'>
[1 2 3 4] <class 'numpy.ndarray'>

可以发现list元素之间有逗号隔开,array之间没有符号隔开

Queue队列 -只允许在一段进行删除操作在另一端进行插入操作的数组结构

Stack栈 -删除与插入操作在同一端进行的数组结构

特点

Queue -先进先出 FIFO first in first out

Stack -先进后出 FILO first in last out

共同点:栈和队列都是一种操作受限制的线性表

用途:栈:表达式的括号匹配问题,迷宫求解

队列:银行排队,操作系统进程问题,舞伴问题

身为老司机,还是得分享些干货精品学习资料的,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以架微信:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~,欢迎初学和进阶中的小伙伴。

python实现队列:(有注释)

 1 class Node(object):
2 def __init__(self,val): #节点传入值
3 self.next=None #每个节点定义2个属性 next指向下一个位置
4 self.val=val # val 节点的值
5
6 class Queue(object):
7 def __init__(self):
8 self.first=None #每个队列定义2个属性 first删除端
9 self.last=None # last插入端
10
11 def enqueue(self,n):
12 n=Node(n)
13 if(self.first==None): #如果队列为空
14 self.first=n
15 self.last=n
16 else: #如果队列不为空
17 self.last.next=n #插入端的指向为n
18 self.last=n #插入端的最后一个值为n
19
20 def dequeue(self):
21 if (self.first==None):
22 return None
23 else:
24 reval=self.first.val
25 self.first=self.first.next #将删除端的第一个指定为下一个
26 return reval
27 def allquit(self): # allquit作用:队列中元素放入list中方便打印
28 alist=[]
29 while (self.first!=None): #循环
30 temp=self.first.val #和dequeue的操作相同
31 self.first=self.first.next
32 alist.append(temp)
33 return alist
34
35 if __name__ == "__main__":
36 q=Queue()
37 q.enqueue(1)
38 q.enqueue(2)
39 q.enqueue(3)
40 q.dequeue()
41 print(q.allquit())

python实现栈:(有注释)

 1 class Node(object):
2 def __init__(self,val):
3 self.next=None
4 self.val=val
5 class Stack(object):
6 def __init__(self):
7 self.top=None #和queue不同栈删除插入都在一端 所以只定义一个位置
8
9 def push(self,n):
10 n=Node(n)
11 if(self.top==None): #如果栈为空
12 self.top=n
13 else:
14 n.next=self.top #插入元素的下一个为顶格元素
15 self.top = n #顶格元素为插入值
16
17 def pop(self): #删除顶格元素
18 if(self.top==None): #如果栈为空
19 return None
20 else:
21 temp=self.top.val
22 self.top=self.top.next #新的顶格元素为老顶格元素的上一个
23 return temp
24
25 def allquit(self): #打印栈方法
26 alist=[]
27 while(self.top!=None): #循环
28 temp=self.top.val #和pop()方法操作相同
29 self.top=self.top.next
30 alist.append(temp)
31 print(alist)
32
33 if __name__== "__main__" :
34 s=Stack()
35 s.push(1)
36 s.push(3)
37 s.push(5)
38 s.pop()
39 s.allquit()
版权声明
本文为[梦幻python]所创,转载请带上原文链接,感谢
https://blog.csdn.net/zihong525/article/details/121542382

  1. Debugging mm32f3277 from zhufei, transplanted with micro Python development board
  2. Recognizing numbers using OpenCV and python
  3. 真的太香了,Python速查表终于出中文版了
  4. Django REST Framework(DRF)教程:快速入门
  5. python django objects filter过滤查询:startswith year
  6. Data encapsulation of Excel test cases in Python
  7. 学员管理系统python
  8. 肝了一夜,8000字概括精髓,pandas必知必会50例!
  9. Python竟然可以画漫画!漫画版的故宫导游图,来袭!
  10. Networkx graph theory Dijkstra algorithm shortest path implementation, Python
  11. Draw a HelloWorld with Python turtle Library
  12. 运行django的服务器内存使用偶尔跳高一点,重启服务马上下来,是内存泄露吧
  13. Basic usage of Python tqdm module in machine learning training
  14. Python -- basic usage method and basic template of argparse module
  15. python-sockertserver并发编程思想
  16. Programmation simultanée du serveur de sockets Python
  17. Vue+Django 旅游网项目 首页前端实现
  18. [learning notes] Python - pyecarts
  19. Python automated operation and maintenance -- actual combat (I)
  20. Classic usage of pandas: iloc and LOC of data filtering
  21. Python 多分支语句的三种结构
  22. Calendar module of Python time series
  23. Python 输出指定范围的闰年
  24. A super easy to use Python standard library. It's great to operate directories and files
  25. Fatal Python error: init_ fs_ encoding: failed to get the Python codec of the filesystem encoding
  26. Using Python to obtain a video address is as simple as
  27. #yyds干货盘点# 6. Python 元组,不可变的列表,滚雪球学 Python
  28. Yyds Dry Inventory # 6. Python tuples, invariant List, snowball Learning Python
  29. You cannot enter the registration page using Django registration redux
  30. 笨办法学Python第十八天:更多文件操作
  31. Python编辑代码,帮个忙呗
  32. pandas转换object为int失败了,有人能解答吗
  33. python解释题,解释这串,所代表的意思
  34. 用python用while语句写1000以内能被5和9整除的数和个数
  35. #python 我写了一个“饭店”程序
  36. Comprehensive application of Python foundation -- Development
  37. Écrivez en python le nombre et le nombre d'entiers qui peuvent être divisés par 5 et 9 jusqu'à 1000 dans une instruction while
  38. python3.7 FileNotFoundError: [WinError 2] 系统找不到指定的文件。
  39. 最全面的Python重点知识汇总
  40. You can learn Python articles without reading online classes (day 4)
  41. You can learn Python articles without reading online classes (the third day)
  42. python中 我想爬取一个网页,我在cmd中pip list中已经把requests 以及bs4 弄好了 但是他还是提示我没有那个模块
  43. You can learn Python articles without reading online classes (the next day)
  44. You can learn Python articles without reading online classes (the first day)
  45. 在Python和Go项目之后使用Rust的经验分享 - scaleway
  46. 使用PyO3从Python调用 Rust:加速Python
  47. Python 3.7 filenotfounderror: [winerror 2] le système n'a pas pu trouver le fichier spécifié.
  48. Python 一切皆对象
  49. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  50. 求各位亲们可以解答一下嘛,为什么跑不出来呀,大学Python
  51. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  52. python飞机大战如何让飞机始终在界面中,不能跑出界面
  53. Python代码阅读(第63篇):数字奇偶性
  54. python建立⼀個圖形介⾯應⽤(GUI app)
  55. python接口自动化的html格式报告以邮件形式发送展示的原文很丑怎么处理
  56. 针对初学者,我建议你学这 3 个 Python AutoEDA 工具包
  57. #yyds干货盘点#Python-爬虫_urlib一个类型和六个方法
  58. Pour les débutants, je vous recommande d'apprendre ces 3 kits autoeda Python
  59. 我想问python怎么入门嘞?求各路人士
  60. Summary of today's Django lessons: data reverse query triggers error field 'score_ jieshoufankui‘ expected a number but got ‘‘-20211109