首页 > 编程语言 > 详细

python基础2

时间:2019-02-20 00:06:51      阅读:168      评论:0      收藏:0      [点我收藏+]

高级特性

切片

切片即取一个list 或者 tuple 的部分元素

L= ["abc", "bcd", "efg", 123, 666]

L[0 : 3]    #取前3个元素,左闭右开
L[ : 3]     #取前3个元素,左端索引为0可省略
L[-2 : ]    #取倒数第2个一直到末尾
L[-3: -1]   #取倒数第3和第2个,注意倒数第一个元素的索引是-1

L[ :10 :2]    #取前10个数,每2个取1个

L[:]    #原样复制一个list

注:tuple也可切片,结果仍是tuple; str同理

迭代

迭代即便利某个list或者tuple,或者str

#dict 迭代key
d = {a: 1, b: 2, c: 3}
for key in d:
    print(key)

#dict默认迭代key,若要迭代value
for val in d.values():
    print(val)

#同时迭代key 和 value
for k, v in d.items():
    print(k, v)

#如果在迭代list时想要下标,可使用 enumerate 函数把list变成索引-元素对
for i, val in enumerate([A, B, C])
    print(i, val)

列表生成式

列表生成式在python中用来生成list

#生成内容为1到10的list
list( range(1, 11) )
#生成从1到10的平方的列表,先把x*x写在前面,列表生成式则用for循环的形式
L = [x*x for x in range(1, 11) ]    
#可以在for循环后加上if,筛选出偶数的平方
L = [x*x for x in range(1, 11) if x % 2 == 0]  

#使用双层嵌套循环,生成全排列
[s1 + s2 for s1 in ABC for s2 in XYZ]

#遍历字典生成全排列
d = {x: A, y: B, z: C }
[k + = + v for k, v in d.items()]

生成器 generator

生成器可以使得在循环的过程中不断推算出后面元素,而不必创建完整的list,从而可以节省空间

生成器有两种:列表生成式构造的生成器、由函数构造的生成器

1)列表生成式构造的生成器:将列表生成式的 [ ] 改成 ( ) 即可

L = [x * x for x in range(10)]    #普通的列表生成式

g = (x*x for x in range(10))    #g是一个生成器
print(next(g))      #用next()函数可以获得generator的下一个返回值,没有元素时继续调用next() 会抛出StopIteration错误

g = (x*x for x in range(10))    #g是一个生成器
for i in g:      #生成器也是可迭代对象,因此可以用for循环
    print(i)

2)由函数构造的生成器:使用yield

#例子1
def odd():      #函数中包含yield关键字,则函数不再是普通函数,而是generator
    print(step 1)
    yield 1
    print(step 2)
    yield 3
    print(step 3)
    yield 5
myOdd = odd()      #这也不是普通的函数调用,而是生成了一个generator对象
next(myOdd)        #用next() 函数不断获得下一个返回值

yield:函数执行到yield之后就进行返回,等到下次next()执行时,从上次返回的yield下方继续执行

#例子2,输出杨辉三角:将每一行看作一个list,写一个generator,使得能不断输出下一行的list
def triang():
    L = [1]
    while True:
        yield L
        lens = len(L)
        L = [ L[n] + L[n+1] for n in range(0, lens - 1)]#生成每行除了一头一尾的所有数字
        L.insert(0, 1)    #添加开头的1
        L.append(1)    #添加末尾的1

 

注意:1.杨辉三角的第n+1行每一个元素都是第n行的上面两个数的和(除了一头一尾的两个1)

           2.while True 很常用

 

python基础2

原文:https://www.cnblogs.com/zhuqiwei-blog/p/10404171.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!