迭代

在python中迭代是通过for ....in...完成的,只要是可迭代对象都可以迭代

#!usr/bin/python
#-*- coding:UTF-8 -*- #tuple迭代
t=[(1,'a','z'),(2,'b','z')]for x,y,z in t:
print(x,z) #enumerate函数可以把一个list或者tuple变成“索引-元素”对
for i,value in enumerate(t):
print(i,value) 》1 z
》2 z 》0 (1, 'a', 'z')
》1 (2, 'b', 'z')

注意:这里输出的其实是tuple(括号省略掉了)

默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()

#dict的迭代
d={'city':'SH','age':12,'sex':'G'}
for k in d.items():
print(k) 输出》
('city', 'SH')
('age', 12)
('sex', 'G')

判断

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

#Iterable类型判断 使用isinstance函数
from collections import Iterable
#str是否可以迭代
print('str是否可以迭代',isinstance('abc',Iterable))
#list是否可以迭代
print('list是否可以迭代',isinstance([1,2,3],Iterable))
#整数是否可以迭代
print('整数是否可以迭代',isinstance(123,Iterable)) 输出》
str是否可以迭代 True
list是否可以迭代 True
整数是否可以迭代 False

使用迭代

使用迭代返回一个list的最小值和最大值

#使用迭代找到list中的最小值和最大值并返回
def findMinAndMax(L):
if L==[]:
return (None,None)
min=max=L[0]
for n in L:
if min>n:
min=n
if max<n:
max=n
return (min,max) print(findMinAndMax([1,3,4,55,2]))
》(1, 55)

列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。写列表生成式要把元素放在前面,后面for...in...,后面可以加i判断,比如:

#列表生成式
li=[x*x for x in range(1,11) if x%2==0]
print(li) 》[4, 16, 36, 64, 100]

应用

运用它可以写出非常简洁的代码,例如列出当前目录下所有的文件和目录名,可以通过一行代码实现:

import os#导入os模块
print([s for s in os.listdir('.')]) 》['DLLs', 'Doc', 'include', 'iter.py', 'Lib',
'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe',
'python3.dll', 'python36.dll', 'pythonw.exe',
'README.txt', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']

列表生成式也可以添加if语句

通过添加if语句将list中的字符串小写

# -*- coding: utf-8 -*-
L1 = ['Hello', 'World', 18, 'Apple', None]
L2=[s.lower() for s in L1 if isinstance(s,str)]
print(L1)
print(L2) 》['Hello', 'World', 18, 'Apple', None]
》['hello', 'world', 'apple']

生成器

在Python中,这种一边循环一边计算的机制,称为生成器:generator。

未完待续。。。

python——高级特性(2)的更多相关文章

  1. 三、python高级特性(切片、迭代、列表生成器、生成器)

    1.python高级特性 1.1切片 list列表 L=['Mli','add','sal','saoo','Lkkl'] L[0:3]  #即为['Mli','add','sal']  从索引0开始 ...

  2. python高级特性:切片/迭代/列表生成式/生成器

    廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...

  3. python高级特性和高阶函数

    python高级特性 1.集合的推导式 列表推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:[exp for item in collection if codition] if ...

  4. Python高级特性(3): Classes和Metaclasses(转)

    原文:Python高级特性(3): Classes和Metaclasses 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变 ...

  5. Python高级特性(2):Closures、Decorators和functools(转)

    原文:Python高级特性(2):Closures.Decorators和functools 装饰器(Decorators) 装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过 ...

  6. Python高级特性(1):Iterators、Generators和itertools(转)

    译文:Python高级特性(1):Iterators.Generators和itertools [译注]:作为一门动态脚本语言,Python 对编程初学者而言很友好,丰富的第三方库能够给使用者带来很大 ...

  7. Python高级特性之:List Comprehensions、Generator、Dictionary and set ...

    今天帅气的易哥和大家分享的是Pyton的高级特性,希望大家能和我一起学习这门语言的魅力. Python高级特性之:List Comprehensions.Generator.Dictionary an ...

  8. Python 高级特性介绍 - 迭代的99种姿势 与协程

    Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...

  9. Python高级特性(切片,迭代,列表生成式,生成器,迭代器)

    掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n = 1 while n ...

  10. Python 高级特性(1)- 切片

    前言 面 tx 被问到 python 的高级特性相关,这里做个补充学习吧 正向范围取值 关键点 首位下标是 0 第一个数字是起始下标,第二个数字是结束下标(但最终结果不包含它) 代码块一 # 正向范围 ...

随机推荐

  1. javascript实现八大排序

    开学一个月,已经多次梦见笔试出现数据结构算法题,我对数据结构的恐惧已经多于任何“妖魔鬼怪”了.呵呵,看来真的很有必要复习一下常用的数据结构,免得“噩梦”成真. 数据机构等编程基础的重要性不用多说,直接 ...

  2. PHP创建与解析 XML 1 (36)

    一.使用SimpleXML操控XML 要处理XML 文件,有两种传统的处理思路:SAX 和DOM.SAX 基于事件触发机制,对XML 文件进行一次扫描,完成要进行的处理:DOM 则将整个XML 文件构 ...

  3. ocp认证052最新题库-收集整理中-1

    1..Which two are true about the Archive (ARCn) processes?❑ A) They automatically delete obsolete arc ...

  4. 洛谷P5279 [ZJOI2019]麻将(乱搞+概率期望)

    题面 传送门 题解 看着题解里一堆巨巨熟练地用着专业用语本萌新表示啥都看不懂啊--顺便\(orz\)余奶奶 我们先考虑给你一堆牌,如何判断能否胡牌 我们按花色大小排序,设\(dp_{0/1,i,j,k ...

  5. (三)SSO之CAS框架单点退出,退出到CAS登录界面

    应需求的改变.CAS自定义登录页面不安全,不再使用,于是我一下子回到了原点,在linux上部署上了没有加自定义登陆界面的CAS,接下来开始修改CAS自己默认的登录界面为我们的界面. 一下子修改成功是根 ...

  6. FutureTask与Fork/Join

    在学习多线程的过程中,我们形成了一种思维习惯.那就是对于某个耗时操作不再做同步操作,让他分裂成一个线程之后执行下一步,而线程执行耗时操作.并且我们希望在我们需要它返回的时候再去调用它的结果集.好比我们 ...

  7. linux上搭建nginx+php+mysql环境详细讲解

    1.mysql安装 #安装编译环境 yum install -y gcc gcc-c++ gcc-devel g++ g++-devel; yum install -y wget yum instal ...

  8. CSS01--概述与选择器

    CSS:Cascading Style Sheets,层叠样式表.我们之前已经说过,HTML解决的是网页内容(结构)的问题,而CSS立足于网页的表现方面的问题,则样式定义如何显示HTML标签,js负责 ...

  9. 实验一 c++简单程序设计

    一.实验内容 1.ex 2_28 (1) 用if...else判断 #include<iostream> using namespace std; int main() { char i; ...

  10. JS正则表达式端口号,IP地址

    端口号:65535 正则:/^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6 ...