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。
未完待续。。。
python——高级特性(2)的更多相关文章
- 三、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高级特性和高阶函数
python高级特性 1.集合的推导式 列表推导式,使用一句表达式构造一个新列表,可包含过滤.转换等操作. 语法:[exp for item in collection if codition] if ...
- Python高级特性(3): Classes和Metaclasses(转)
原文:Python高级特性(3): Classes和Metaclasses 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个“类对象”并将其赋值给一个同名变 ...
- Python高级特性(2):Closures、Decorators和functools(转)
原文:Python高级特性(2):Closures.Decorators和functools 装饰器(Decorators) 装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过 ...
- 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 高级特性介绍 - 迭代的99种姿势 与协程
Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...
- Python高级特性(切片,迭代,列表生成式,生成器,迭代器)
掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n = 1 while n ...
- Python 高级特性(1)- 切片
前言 面 tx 被问到 python 的高级特性相关,这里做个补充学习吧 正向范围取值 关键点 首位下标是 0 第一个数字是起始下标,第二个数字是结束下标(但最终结果不包含它) 代码块一 # 正向范围 ...
随机推荐
- cesium编程入门(六)添加 3D Tiles,并调整位置,贴地
添加 3D Tiles,并调整位置 3D Tiles 是什么 3DTiles数据集是cesium小组AnalyticlGraphics与2016年3月定义的一种数据集,3DTiles数据集以分块.分级 ...
- WEB文本框提示
<input type="text" placeholder="文本框提示语" name="version_no"/>
- 知识记录——Session与Cookie
Session: Session是“会话”的意思,然而,因为http协议是无状态的,那么每次客户端请求服务器端,服务器端都会以“崭新”的页面展示给客户端,这在静态的html页面中是不会存在任何影响,但 ...
- Hibernate继承映射(@Inheritance)
继承映射在 Annotation 中使用 @Inheritance 注解,并且需要使用 strategy 属性指定继承策略,继承策略有 SINGLE_TABLE.TABLE_PER_CLASS 和 J ...
- k8s 常用指令
kubectl rolling-update redis-master --image=redis-master:2.0 基于镜像灰度发布 推荐链接
- BZOJ1558 等差数列
题目链接:戳我 实话实话,看了几篇题解真的没看懂,我觉得讲的都有问题.这里对于线段树维护的s写了一点我自己的理解. 看到等差数列,我们考虑对数列做差,这样如果是等差数列,那么值应该相等.(比较容易维护 ...
- django系列3.2--url的别名和反向解析 reverse
命名URL和反向解析 在网页中某些要提交的地址等,需要改变的时候,此时网页过多,如果一个一个的去改,工作量巨大,这时就可以用到命名url,在html文件的模版中,只写命名,这样当需要我们改变urls. ...
- 算法导论-MIT笔记
第一部分 Analysis of Algorithms 算法分析是关于计算机程序性能(performance)和资源利用的理论研究 1 What's more important than perfo ...
- order by中用子查询排序
今天有个需求是对一个列表排序,但是排序字段是在另一个表中,不想用关联查询,就想能否直接在order by中用子查询,后来找到一个还挺好使.记录如下. 排序语句如下: select * from mai ...
- [转] CentOS7 用 kubeadm 快速安装 Kubernetes v1.13.4 最新教程
[转 + 编辑][From] https://www.jianshu.com/p/4d61f18bc62d , https://www.jianshu.com/p/5ff6e26d1912 时间是2 ...