在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学习——基础(四)相关推荐

  1. Python爬虫你需要积累这些基本知识_Python学习基础路线

    Python爬虫你需要积累这些基本知识_Python学习基础路线 爬虫定义.分类和流程 爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则, ...

  2. 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?

    2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...

  3. Python精简入门学习(四)

    Python精简入门学习之流程控制(下) -循环的分类 -while循环 -for 循环 -break 和 continue -break的使用 -continue的使用 python福利教程领取方式 ...

  4. python 乱码 无效_python学习第四天:python基础(字符编码和乱码到底咋回事儿)...

    字符编码 这得从字符编码开始说起: 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题.因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理. 最早的计算机在设计时采 ...

  5. 中文python笔记_Python学习笔记-基础篇

    安装 Linux Linux已经自带Python了,我的Centos7自带Python2.7.4,我通过源码安装来更新版本. #!/bin/bash #源码安装 wget https://www.py ...

  6. 零基础学python数据分析_Python学习指南:使用Python学习数据分析

    如今,在大数据行业中Python和数据分析可能是最常听到的两个词,在当今蓬勃发展的科技领域,精通这两项技术可以带来无限的可能.近年来,我们看到Python教育在大数据领域突飞猛进. 因此,这里我们提供 ...

  7. python中二进制文件_Python学习基础篇 -6: Python中的文件操作

    前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 . 文件有有什么用 文件可以看作一个仓库 ...

  8. python变量类型是动态的_Python 学习 第四篇:动态类型模型

    Python的变量不用声明,赋值之后就可以直接使用,类型是在运行过程中自动确定的,这就是动态类型模型.该模型把变量和对象设计成两个不同的实体,对象是存储数据的地方,对象的类型是由初始值自动决定的,而变 ...

  9. python中文件操作中不同的文件操作有何差异_Python学习基础篇 -6: Python中的文件操作...

    前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 .文件有有什么用 文件可以看作一个仓库, ...

  10. 自学python 编程基础知识_python学习-基础知识-1

    1.计算机历史 计算机使用高低电压的两种状态来描述信息.计算机可以理解的只有二进制数据即010100011....,1个比特位可以表示的状态只有2种,n个比特位可以表示的状态有2的n次方种. 所以如果 ...

最新文章

  1. 机器学习中的数学:一份新鲜出炉的热门草稿
  2. 【转】局域网内访问VS2012 调试的IIS Express web服务器
  3. 【知识图谱】知识抽取与挖掘(I)
  4. 面向对象编程从骨子里就有问题——看看名人大家是如何吐槽面向对象的
  5. 【修炼5】《基础篇》别把项目成功当目标
  6. 十一、PHP框架Laravel学习笔记——构造器的查询.分块.聚合
  7. windows和linux存储float,C语言float型数据在内存中的储存方式
  8. php 数组的处理,php 数组处理
  9. Spring集成Quartz定时任务框架介绍和Cron表达式详解
  10. 两个表里数组字段的映射关联(stuff ,charindex,for xml path)
  11. 产品经理 需求 项目经理 选择_【产品】产品和项目,产品经理和项目经理 区别...
  12. android adb工具命令大全
  13. Windows server2016 安装SqlServer2005 无法启动服务
  14. 作业一:建立博客、自我介绍、速读教材、学习进度总结-----蔡强130201201
  15. 戴尔服务器板载系统raid管理,如何在 Dell 系统的统一可扩展固件接口(UEFI)配置中管理您的板载 LSI 3008 RAID 控制器...
  16. 转载《五大免费采集器哪个好,火车头,海纳,ET,三人行,狂人采集 》
  17. 重症监护病人心电导联信号质量评估、SQI
  18. html中添加强制下载链接
  19. 闲人闲谈PS之三十——新收入准则中的合同资产和合同负债
  20. p标签内不能包含块级元素

热门文章

  1. vite+vue3 整合vue-router4和vuex4
  2. 蓝桥杯2017年第八届C/C++省赛C组第二题-兴趣小组
  3. Flutter学习 — 从新页面返回数据给上一个页面
  4. Futter基础11篇: 实现自定义AppBar 定义顶部Tab切换、底部Tab结合顶部Tab实现类似头条页面布局
  5. 7-6 查找整数 (10 分)
  6. Jmeter查看结果树
  7. json-lib javabean转换为首字母大写的json串
  8. Android Studio 设置/更改 SDK 路径
  9. 1124Js基础语法
  10. hibernate防止sql注入(转载)