python——高级特性(2)
迭代
在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。
未完待续。。。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
5月4日云栖精选夜读丨海归的阿里故事,阿里巴巴Java开发手册介绍
”生命中有两种力量,一种是引力,像地球把月球和小行星吸附在轨道上,依靠惯性周而复始。另一种是动力,如同火箭推摆脱地心引力,去探索更广阔的宇宙。”——伟耘(阿里云网络团队的产品运营专家) 热点热议 从硅谷到杭州:一个海归的阿里故事 五四青年节之际,受云栖社区邀请,来分享下自己的成长故事。 本人目前是阿里云网络产品团队的产品运营专家,负责网络产品的一系列市场活动和品牌建设。 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍 本文带大家简单理解阿里巴巴Java开发手册中的规约内容以及P3C项目,可以帮助开发者扫描出所有潜在的代码隐患。在中间也聊了一些对于不同语言设计的理解,如何去看待语言的设计,其实是我们去学习一个语言的核心。 后羿射日般的精准 - 阿里云ECS调度是如何炼成的 作者:抹达 快来围观!阿里云行业视觉智能诊断技术 作者:斑马不睡觉 知识整理 淘宝成“新生代海归”创业首选:超两成头部卖家有海外背景 作者:技术小能手 实用:用深度学习方法修复医学图像数据集 作者:技术小能手 为什么要用分布式集群任务调度? 作者:调皮仔3683 自学提高:JVM点滴 作者:mikel...
- 下一篇
普林斯顿《算法》笔记 (一)
官方网站 官方代码 第一章 基础 1.1 基础编程模型 1.1节的内容主要为介绍Java的基本语法以及书中会用到的库。 下图为一个Java程序示例和相应的注解: 本书用到的几种基本语法: 初始数据类型 (primitive data tyoes):整型 (int),浮点型 (double),布尔型 (boolean),字符型 (char)以及组合起来的表达式。 语句 (statements):声明 (declarations),赋值 (assignments),条件 (conditionals),循环 (loops),调用 (calls),返回 (returns)。 数组 (arrays) 静态方法 (static methods):即函数。 字符串 (strings) 标准输入/输出 (input/output) 数据抽象 (data abstraction) Java的int为32位,double为64位 除int和double以外的其他初始数据类型: 64位整数 (long) 16位整数 (short) 16位字符 (char) 8位整数 (byte) 32位单精度实数 (flo...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8