Day8 python高级特性-- 迭代 Iteration
相比于C的for循环, Python的for循环抽象成都更好,不仅可以用在list或tuple上,还可以用在其他可迭代对象上。
>>>
>>> for i in a:
... print(i)
...
a
5
d
4
1
3
2
bc
dict迭代:
默认情况下,dict迭代的是key , 如果要迭代value,可以使用 dictname.value() 的方式来表示value, 如果要同时迭代key和value,可以使用 dictname.items()
可以引入python内置函数 enumerate , 把一个list变成索引-元素 对, 这样就可以再for循环中同时迭代索引和元素本身了:
>>> a = ['a','b','c','d','e']
>>> for inode,value in enumerate(a):
... print(inode,value)
...
0 a
1 b
2 c
3 d
4 e
>>> a = [(1,2),(3,4),(5,6),(7,8)]
>>> for i,j in a:
... print(i,j)
...
1 2
3 4
5 6
7 8
不过如果不加小括号, 就报错了。(后续学习找答案)
使用一个变量时:
>>> a = [(1,2),(3,4),(5,6),(7,8)]
>>> a[0]
(1, 2)
>>> for i in a:
... print(i)
...
(1, 2)
(3, 4)
(5, 6)
(7, 8)
期待后续学习过程中能搞懂二者各自适合在哪里。
附加:
判断一个对象是否可迭代:通过collections模块的iterable类型。
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
练习: 用迭代查找list中最小值和最大值:
if len(L) == 0:
return (None, None)
else:
max = L[0]
min = L[0]
for i in L:
if i > max:
max = i
elif i < min:
min = i
return (min, max)
if findMinAndMax([]) != (None, None):
print('测试失败1!')
elif findMinAndMax([7]) != (7, 7):
print('测试失败2!')
elif findMinAndMax([7, 1]) != (1, 7):
print('测试失败3!')
elif findMinAndMax([7, 1, 3, 9, 5]) != (1, 9):
print('测试失败4!')
else:
print('测试成功5!')
Day8 python高级特性-- 迭代 Iteration的更多相关文章
- Python高级特性——迭代(Iteration)
1.给定一个集合list或者tuple,可以通过for …… in ……的语法来实现循环遍历,这个循环我们就叫做迭代 迭代list: >>> m = ['haha','hehe',' ...
- python高级特性-迭代
概述 for v in d.values(): for k,v in d.items(): for a in 'adfa': #判断对象是否可迭代 from collections i ...
- 三、python高级特性(切片、迭代、列表生成器、生成器)
1.python高级特性 1.1切片 list列表 L=['Mli','add','sal','saoo','Lkkl'] L[0:3] #即为['Mli','add','sal'] 从索引0开始 ...
- python高级特性:切片/迭代/列表生成式/生成器
廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...
- Python 高级特性介绍 - 迭代的99种姿势 与协程
Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...
- Python高级特性(1):Iterators、Generators和itertools(转)
译文:Python高级特性(1):Iterators.Generators和itertools [译注]:作为一门动态脚本语言,Python 对编程初学者而言很友好,丰富的第三方库能够给使用者带来很大 ...
- Python高级特性之:List Comprehensions、Generator、Dictionary and set ...
今天帅气的易哥和大家分享的是Pyton的高级特性,希望大家能和我一起学习这门语言的魅力. Python高级特性之:List Comprehensions.Generator.Dictionary an ...
- python高级特性和高阶函数
python高级特性 1.集合的推导式 列表推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:[exp for item in collection if codition] if ...
- Python高级特性(3): Classes和Metaclasses(转)
原文:Python高级特性(3): Classes和Metaclasses 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变 ...
随机推荐
- Python_字符串_方法
#字典#把字符串中的字母提取出来改为大写并计数 a="aAsmr3idd4bgs7Dlsf9eAF" b1=[x for x in a if x.isalpha()] b=''.j ...
- LeetCode-Python-删除链表解题思路
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. image.png 解题思路: 使用双指针,快指针与慢指针的间隔为n: 涉及到最后要删除慢指针的节点,为了方便,先开辟一个nod ...
- 12种不宜使用的Javascript语法 ---阮一峰
原文链接-阮一峰博客 1. == Javascript有两组相等运算符,一组是==和!=,另一组是===和!==.前者只比较值的相等,后者除了值以外,还比较类型是否相同. 请尽量不要使用前一组,永远只 ...
- Unity Lod
LOD是Level Of Detais 的简称,多细节层次,根据摄像机与物体距离,unity会自动切换模型.一般离摄像机近的时候显示高模,离摄像机远的时候显示低模,借此来提升性能. 如果你在Blend ...
- Cypress系列(90)- Cypress.Cookies 命令详解以及如何跨测试用例共享 Cookies
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html Cypress.Cookies 共有三个 ...
- 金九银十想面BAT?那这些JDK 动态代理的面试点你一定要知道
一.什么是代理 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 代理模式UM ...
- .NET 5 ORM 八大实用技巧 干货 - SqlSugar ORM
介绍 sqlsugar已经在第一时间完美兼容.NET5并且已经有人在使用了, 很多人都担心用了开源框架遇到问题无法解决,导致前功尽弃,使用SqlSugar你大可放心,除了有详细文档和几年的大量用户积累 ...
- 吉他自学用Guitar Pro好不好?
很多人心中都有一个吉他梦,可苦于没有坚持下来.其实一个人自学吉他过程是非常枯燥的.经常手上被磨得都是茧,但是也不清楚自己弹的到底对不对. 如果不跟着老师练习,那很有可能就走了歪路或者是无法长期坚持.所 ...
- UIWebView各种加载网页的方式
UIWebView加载网页的方法 最近在使用UIWebView的时候遇到各种不同形式加载网页的方式,总结起来共有三种方式,分别为:使用URL加载,使用HTML源码加载,使用HTML文件加载,各种方法的 ...
- 精尽MyBatis源码分析 - SQL执行过程(四)之延迟加载
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...