标签:
L = [1, 2, 3, 4, 5]
L[0:3]=[1,2,3]
表示,从索引0
开始取,直到索引3
为止,但不包括索引3
。即索引0
,1
,2
,正好是3个元素。
如果第一个索引是0
,还可以省略L[-2:]=[4,5]从倒数第二个数 到 最后一个数
L = list(range(100))# 创建一个0-99的数列L L[:10:2]# 前10个数,每两个取一个 L[::5]# 所有数,每5个取一个 iterable.[::-1] # 字符串翻转。非常有用!!
‘xxx‘
也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串,相当于其他编程语言里的字符串截取函数 substring等for
循环抽象程度要高于Java的for
循环,因为Python的for
循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代
,比如dict就可以迭代,字符串也可迭代。for key in d: #迭代key for value in d.values():#迭代value for k, v in d.items():#key,value都迭代 for ch in 'ABC': #字符串,分别打印A,B,C</span>
enumerate
函数可以把一个list变成索引-元素对,这样就可以在for
循环中同时迭代索引和元素本身:for
循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
可以用list(range(1, 11))
>>> import os # 导入os模块,模块的概念后面讲到
>>> [d for d in os.listdir(‘.‘)] # os.listdir可以列出文件和目录,路径可以修改如e:/sublime/python
[‘.emacs.d‘, ‘.ssh‘, ‘.Trash‘, ‘Adlm‘, ‘Applications‘]
>>> L = [‘Hello‘, ‘World‘, ‘IBM‘, ‘Apple‘]
>>> [s.lower() for s in L]
[]
改成(),next()函数获取generator的每一个元素,其实一般很少用该函数,用for循环会更加方便。
>>> g = (x * x for x in range(10))
>>> for n in g:
... print(n)
函数定义中使用yield
关键字:会中断的printdef fib(max):
n, a, b = 0, 0, 1
函数打印时为print(b)
a, b = b, a + b
n = n + 1
>>> for n in fib(6):
for
循环的对象都是Iterable
类型(可迭代);next()
函数的对象都是Iterator
类型,它们表示一个惰性计算的序列;list
、dict
、str
等是Iterable
但不是Iterator
,不过可以通过iter()
函数获得一个Iterator
对象。Iterator
都是可迭代的Iterable
。>>> isinstance(‘abc‘, Iterator)
>>> isinstance(iter(‘abc‘), Iterator)
标签:
原文地址:http://blog.csdn.net/flyfish111222/article/details/51213293