-
切片
取一个list或tuple的部分元素是非常常见的操作。比如说,一个listL = ['hello','word','my','name','is','wit.L']
对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符
L[0:3]#表示,从索引0开始取, 直到索引3为止,但不包括索引3. 即索引0,1,2,正好是3个元素 L[:3]#如果第一个索引是0,可以省略 L[1:3]#也可以从索引1开始,取出2个元素 #既然Python支持L[-1]取倒数第一个元素与,那么它同样支持倒数切片 L[-2:] L[-2:-1]
-
迭代
#迭代字典 d = {'a':1,'b':2,'c':3} for key in d: print(key) for key,val in d.items(): print(key,val) #迭代字符串 for x in 'ABC': print(x) #传入多变量 for x,y in [(1,2),(3,4),(5,6)]: print(x,y) #获取下标 for i,value in enumerate(['a','b','c']): print(i,value)
-
列表生成式
举个例子,要生成[1,2,3,4,5,6,7,8,9,10]可以用list(range(1,11)),但如果要生成[1*1,2,2,33…]怎么做呢?一种方法是用循环,这个时候就可以用到列表生成式:
L = [x * x for x in range(1,11)] #二层循环 L = [x * y for x in range(1,11) for y in range(0,5)] #三层和三层以上的循环就很少用到了
运用列表生成式,可以写出非常简洁的代码
-
生成器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且创建一个包含100万个元素的列表,不仅占用很大空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。要创建生成器(generator),有很多种方法。第一种方法很简单,只要把一个列表生成式的 [] 改成 (),就创建了一个生成器(generator)
g = (x*x for x in range(0,5) #我们可以直接打印出list的每个元素,但我们怎么打印出generator的每个元素呢? #如果要一个一个打印出来可以用next()函数 next(g) next(g) #杨辉三角,没写出来,额。。 def triangles(): reslist = [1] yield(reslist) reslist = [1,1] yield(reslist) while True: y = 0 temp=[] for i,x in enumerate(reslist): if i = len(reslist): temp.append(1) else temp.append(x + y) y = x reslist = temp yield(reslist) return 'done'
Python学习笔记-python基础04-高级特性
最新推荐文章于 2022-11-21 18:37:21 发布