python middle()_python学习——基础(四)
在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。
切片:
L = [‘Michael‘, ‘Sarah‘, ‘Tracy‘, ‘Bob‘, ‘Jack‘]
print L[0:3] # [‘Michael‘, ‘Sarah‘, ‘Tracy‘]
L[0:3]
表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。
如果第一个索引是0,还可以print L[:3]
同时可以设置步长:
L = range(100)
print L[10:20:2] # 最后一个2表示每隔2隔取一个值
print L[::5] # 所有数每隔5隔取一个
print L[:] # 原样复制一个list
tuple = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) #tuple也可以切片
print tuple[:3]
print ‘ABCDEFG‘[:3] # 字符串也可以进行切片
print ‘ABCDEFG‘[::2]
按照从左边开始到右边截止的交集,否则为空。
迭代:
在Python中,迭代是通过for ... in来完成的;当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型;那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
from collections import Iterable
print isinstance(‘abc‘, Iterable) # True
print isinstance([1, 2, 3], Iterable) # True
print isinstance((1, 2, 3), Iterable) # True
print isinstance({‘java‘: ‘diff‘, ‘python‘: ‘middle‘}, Iterable) # True
同时可以获取可迭代对象元素的下标:
for i, key in enumerate([‘a‘, ‘b‘, ‘c‘]):
print i,key
0 a
1 b
2 c
for x, y in [(1, 1), (2, 4), (3, 9)]:
print x, y
1 1
2 4
3 9
列表生成式:
print [x*x for x in range(1, 11)]
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print [x*x for x in range(1, 11) if x % 2 ==0]
# [4, 16, 36, 64, 100],在list里面可以用if语句进行刷选
print [m+n for m in ‘ABC‘ for n in ‘XYZ‘]
# [‘AX‘, ‘AY‘, ‘AZ‘, ‘BX‘, ‘BY‘, ‘BZ‘, ‘CX‘, ‘CY‘, ‘CZ‘]
L = [‘Hello‘, ‘World‘, 18, ‘Apple‘, None]
print [x.lower() if isinstance(x, str)else x for x in L ]
# [‘hello‘, ‘world‘, 18, ‘apple‘, None],在条件表达式中进行筛选
生成器:
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。
创建L
和g
的区别仅在于最外层的[]
和()
,L
是一个list,而g
是一个generator。
s = (x*x for x in range(1, 11))
print [m for m in s] # 通过for循环遍历出generator的内容
另一种生成generator的方法:
def odd():
print ‘step 1‘
yield 1
print ‘step 2‘
yield 3
print ‘step 3‘
yield 5
print odd()
print [m for m in odd()]
结果:
step 1
step 2
step 3
[1, 3, 5]
变成generator的函数后,在每次调用next()
的时候执行,遇到yield
语句返回,再次执行时从上次返回的yield
语句处继续执行。
原文:http://my.oschina.net/u/257801/blog/519347
python middle()_python学习——基础(四)相关推荐
- Python爬虫你需要积累这些基本知识_Python学习基础路线
Python爬虫你需要积累这些基本知识_Python学习基础路线 爬虫定义.分类和流程 爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则, ...
- 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?
2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...
- Python精简入门学习(四)
Python精简入门学习之流程控制(下) -循环的分类 -while循环 -for 循环 -break 和 continue -break的使用 -continue的使用 python福利教程领取方式 ...
- python 乱码 无效_python学习第四天:python基础(字符编码和乱码到底咋回事儿)...
字符编码 这得从字符编码开始说起: 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题.因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理. 最早的计算机在设计时采 ...
- 中文python笔记_Python学习笔记-基础篇
安装 Linux Linux已经自带Python了,我的Centos7自带Python2.7.4,我通过源码安装来更新版本. #!/bin/bash #源码安装 wget https://www.py ...
- 零基础学python数据分析_Python学习指南:使用Python学习数据分析
如今,在大数据行业中Python和数据分析可能是最常听到的两个词,在当今蓬勃发展的科技领域,精通这两项技术可以带来无限的可能.近年来,我们看到Python教育在大数据领域突飞猛进. 因此,这里我们提供 ...
- python中二进制文件_Python学习基础篇 -6: Python中的文件操作
前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 . 文件有有什么用 文件可以看作一个仓库 ...
- python变量类型是动态的_Python 学习 第四篇:动态类型模型
Python的变量不用声明,赋值之后就可以直接使用,类型是在运行过程中自动确定的,这就是动态类型模型.该模型把变量和对象设计成两个不同的实体,对象是存储数据的地方,对象的类型是由初始值自动决定的,而变 ...
- python中文件操作中不同的文件操作有何差异_Python学习基础篇 -6: Python中的文件操作...
前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 .文件有有什么用 文件可以看作一个仓库, ...
- 自学python 编程基础知识_python学习-基础知识-1
1.计算机历史 计算机使用高低电压的两种状态来描述信息.计算机可以理解的只有二进制数据即010100011....,1个比特位可以表示的状态只有2种,n个比特位可以表示的状态有2的n次方种. 所以如果 ...
最新文章
- 机器学习中的数学:一份新鲜出炉的热门草稿
- 【转】局域网内访问VS2012 调试的IIS Express web服务器
- 【知识图谱】知识抽取与挖掘(I)
- 面向对象编程从骨子里就有问题——看看名人大家是如何吐槽面向对象的
- 【修炼5】《基础篇》别把项目成功当目标
- 十一、PHP框架Laravel学习笔记——构造器的查询.分块.聚合
- windows和linux存储float,C语言float型数据在内存中的储存方式
- php 数组的处理,php 数组处理
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- 两个表里数组字段的映射关联(stuff ,charindex,for xml path)
- 产品经理 需求 项目经理 选择_【产品】产品和项目,产品经理和项目经理 区别...
- android adb工具命令大全
- Windows server2016 安装SqlServer2005 无法启动服务
- 作业一:建立博客、自我介绍、速读教材、学习进度总结-----蔡强130201201
- 戴尔服务器板载系统raid管理,如何在 Dell 系统的统一可扩展固件接口(UEFI)配置中管理您的板载 LSI 3008 RAID 控制器...
- 转载《五大免费采集器哪个好,火车头,海纳,ET,三人行,狂人采集 》
- 重症监护病人心电导联信号质量评估、SQI
- html中添加强制下载链接
- 闲人闲谈PS之三十——新收入准则中的合同资产和合同负债
- p标签内不能包含块级元素
热门文章
- vite+vue3 整合vue-router4和vuex4
- 蓝桥杯2017年第八届C/C++省赛C组第二题-兴趣小组
- Flutter学习 — 从新页面返回数据给上一个页面
- Futter基础11篇: 实现自定义AppBar 定义顶部Tab切换、底部Tab结合顶部Tab实现类似头条页面布局
- 7-6 查找整数 (10 分)
- Jmeter查看结果树
- json-lib javabean转换为首字母大写的json串
- Android Studio 设置/更改 SDK 路径
- 1124Js基础语法
- hibernate防止sql注入(转载)