1.切片

取一个list或tuple的部分元素是非常常见的操作

L = ['hello','the','world','and','my','love']

取前三个元素 L[0:3],L[:3]

取倒数第一个元素:L[-1](倒数第一个元素的索引-1)

取后两个元素:L[-2:]

创建0-99的数列:L=list(range(100))

取前十个元素:L[:10]

取后十个元素:L[-10:]

前11-20个元素:L[10:20]

前10个数,每两个取一个:L[:10:2]

所有数,每5个取一个:L[::5]

复制一个list:L[:]

tuple也是一种list,唯一区别是tuple不可变,切片同样适用于tuple,结果仍然是tuple(0,1,2,3,4,5)[:3] =>(0,1,2)

字符串也可以看成一种list,也可以用于切片 'ABCDEF'[:3]=>'ABC'

python中没有针对字符串的截取函数,只需要切片操作就可以。

2.迭代

dict迭代:

>>>d = {'a':1,'b':2,'c':3}
>>>for key in d:
... print(key)

迭代value

>>>for value in d.values()

同时迭代key和value

>>>for k, v in d.items()

字符串迭代:

>>>for ch in 'ABC':
... print(ch)

判断一个对象是否是可迭代对象

from collections import Iterable
>>>isinstance('abc',Iterable) #str是否可迭代
True
>>>isinstance([1,2,3],Iterable) #list是否可迭代
True
>>>isinstance(123,Iterable) #整数是否可迭代
False

list的下标循环迭代,通过enumerate内置函数可以把一个list变成索引-元素对

>>>for i,value in enumerate(['a','b','c']):
... print(i,value)

3.列表生成式(生成list)

>>>[x * x for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>[x * x for x in range(1,11) if x % 2 ==0]
[4, 16, 36, 64, 100]
>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

4.生成器

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator

>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))

要把fib函数变成generator,只需要把print(b)改为yield b就可以了

def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'

这就是定义generator的另一种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。

5迭代器

凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象;

Python的for循环本质上就是通过不断调用next()函数实现的;

能写一行代码解决问题,绝不写5行。请始终牢记,代码越少,开发效率越高

最新文章

  1. SSIS 文件系统任务无法使用变量配置目标路径
  2. Ubuntu 系统密码相关问题
  3. Longest Palindromic Substring
  4. 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。
  5. 在 Fedora 里安装自带的 MATE和 cinnamon
  6. jsp 页面通过jq处理默认 选中的项 数据是通过遍历显示
  7. android strings.xml转义字符, 注意细节解决(转)
  8. python批量下载
  9. [Redux] Extracting Presentational Components -- Footer, FilterLink
  10. impala安装
  11. gnutls-3.5.18 static building for windows
  12. Linux redhat 7 进入单用户模式
  13. Linux常用基本命令:grep-从文件或者管道中筛选匹配的行
  14. AngularJS自定义Directive中link和controller的区别
  15. 如何修改mac的root密码
  16. WebApi2跨域问题及解决办法
  17. php两个多维数组组合遍历
  18. 切图psd to html页面制作技术学习与总结
  19. 使用NativeExtension向AIR app 添加Activity和BroadCastReceiver(2)
  20. PacBio下机数据如何看?

热门文章

  1. NoSQL 数据库分类 颠覆
  2. log日志框架和LocationAwareLogger问题
  3. Python3.6全栈开发实例[011]
  4. C++学习之旅get、getline的使用方法
  5. PyNest&mdash;&mdash;part 2: populations of neurons
  6. LATEX教程(二)
  7. New Moto X 2014 全版本RSD&amp;Fastboot刷官方底包教程
  8. corethink功能模块探索开发(四)让这个模块跑起来
  9. 电信、网通、联通等恶意DNS劫持跳广告页面的解决方法
  10. SQLServer数据库基本操作,导入Excel数据