python基础二

高级特性


切片    取list或tuple的部分元素

L[0:3]  取L中前三个元素(L[0]  L[1]   L[2])  当第一个索引是0时可以省略  L[:3]

倒数切片  L[-3:]   >>  L[-3]  L[-2]  L[-1]

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

L[ : : 2]

L[:] 原样复制一个list/tuple

对字符串也可以进行切片  str = "abcd"  str[::2] >> ac


迭代

list   tuple    

dict    for key in dict     for v in dict.values()     for k,v in dict.items()

str    for ch in "abc"

判断一个对象是否可迭代,通过collections模块的Iterable

from  collections import Iterable

isinstance(obj,Iterable)

如果想要迭代出下标,通过内置的enumerate函数

for i,value in enumerate(['a','b','c'])

        print(i,value)

>> 0  a      1  b       2  c

当有多个变量需要迭代时,可以使用zip()封装,zip会将对应元素封装成tuple,返回list

a=[1,2,3]

b=[4,5,6]

for i,j in zip(a,b):

        print i, j

>>  1  4      2  5      3  6

列表生成式  List Comprehensions

list(rang(1,10))  >> [1,2,3,4...7,8,9]

[x*x for x in range(1,10)]  >> [1*1,2*2,3*3,...,9*9]

[x*x for x in range(1,10) if x%2==0]

[m+n for m in "abc" for n in "xyz"] 两层循环

[d for d in os.listdir('.')]

生成器 generator

g = (x*x for x in range(10))

next(g)  >> 0

next(g)  >> 1

next(g)  >> 4

当没有更多元素时,next(g) >> StopIteration

for  ele  in  g:

        print  ele

def fib(max):

    n,a,b = 0,0,1

    while n<max:

         yield b

         a,b = b,a+b

         n = n+1

    return

每次调用fib,暂停在yield语句处

迭代器  Iterator

可以直接作用于for循环的数据类型有:

集合数据类型:list   tuple  dict   set   str等

generator  生成器和带yield的generator function

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

from  collections  import  Iterator

isinstance(obj,Iterator)

对于list  tuple  str等虽然是Iterable,但是不是Iterator,可以使用iter()函数

全部评论

相关推荐

牛客339922477号:都不用reverse,直接-1。一行。啥送分题
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务