分类:序列
1基本用法把序列乘以一个整数,就会产生一个新序列。这个新序列是原始序列复制了整数份,然后再拼接起来的结果。l=[1,2,3]l2=l*3logging.info('l2->%s',l2)l3=5*'deniro'logging.info('l3->%s',l3)运行结果:INFO-l2->[1,2,3,1,2,3,1,2,3]INFO-l3->denirodenirodenirodenirodeniro*复制语法不会修改原有的操作对象,而是构建出一个全新的序列。2列表陷阱a*n语法中,a为列表,n为需要复制的列表数...
继续阅读 >
问题你想将一个多层嵌套的序列展开成一个单层列表解决方案可以写一个包含yieldfrom语句的递归生成器来轻松解决这个问题。比如:fromcollectionsimportIterabledefflatten(items,ignore_types=(str,bytes)):forxinitems:ifisinstance(x,Iterable)andnotisinstance(x,ignore_types):yieldfromflatten(x)else:yieldxitems=[1,2,[3,4,[5,6],7],8]#Produces12345678forx...
继续阅读 >
问题你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列解决方案最简单的过滤序列元素的方法就是使用列表推导。比如:>>>mylist=[1,4,-5,10,-7,2,3,-1]>>>[nforninmylistifn>0][1,4,10,2,3]>>>[nforninmylistifn<0][-5,-7,-1]>>>使用列表推导的一个潜在缺陷就是如果输入非常大的时候会产生一个非常大的结果集,占用大量内存。如果你对内存比较敏感,那么你可以使用生成器表达...
继续阅读 >