美文网首页
Python高级特性

Python高级特性

作者: 纳萨立克 | 来源:发表于2017-10-18 11:15 被阅读7次

切片


#  切片

mylist = [1,2,3,4,5,6,7,8,9,10,11]

#取前3个元素

mylist[0:3]   #  [1, 2, 3]

#从索引0开始取,还可以省略

mylist[:3]  # [1, 2, 3]


#取倒数第一个元素
mylist[-1]  # [11]
mylist[-2:]  #[10, 11]

###字符串也可以使用切片

str = 'abcdefg'

str[:4]  #abcd


迭代

###迭代  for...in..

###string

for ch in 'abcdef':
    print(ch)

###list

for a in  [1,2,3,4,5,6,7,8]:
    print(a)
###tuple

myTuple = {'a':1,'b':2,'c':3,'d':4}

for key in myTuple:
    print(key)

for k,v in myTuple.items():
    print(k,':',v)

for value in myTuple.values():
    print(value)
    
#判断一个类型是否支持迭代

isinstance('abc',Iterable) #判断字符串是否支持迭代  True

isinstance(123,Iterable)  #判断整数是否支持迭代  False

列表生成式

#简单单层列表生成式

[x * x for x in range(1,11)]   # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

#添加判断

a = [x * x for x in range(1,11) if x % 2 == 0]  # [4, 16, 36, 64, 100]

##两层循环

a = [m+n for m in 'abc' for n  in 'XYZ']  #['aX', 'aY', 'aZ', 'bX', 'bY', 'bZ', 'cX', 'cY', 'cZ']


#把一个list中所有的字符串变成小写

L = ['Hello', 'World', 'IBM', 'Apple']

[s.lower() for s in L]

生成器 generator

generator:按照某种算法推算出来结果,是一种一边循环一遍计算的机制.

创建一个生成器

生成器和列表生成式的区别在最外层的[]和(),L是一个List, g是一个generator

#创建一个列表生成式
L = [x * x for x in range(10)]
#创建一个生成器
g = (x * x for x in range(10));

获取值 next()

next(g)   // 0
next(g)   // 1
next(g)   // 4
next(g)   // 9

generator也是一个可迭代的对象

使用generator 基本上都不会使用next(),而是使用for循环来迭代

for a in g:
    print(a);
    
#0 1 4 9 16 25 36 49 64 81

generator还可以使用函数来实现

实现一个Fibonacci数列(1,1,2,3,5,8,13,21,34,...)

使用函数实现

def fib(max):
    n,a,b = 0,0,1
    while n < max:
        print(b)
        a,b = b,a+b
        n = n + 1

创建生成器

def fibG(max):
    n,a,b = 0, 0, 1
    while n < max:
        yield  b
        a,b = b,a+b
        n = n+1

g1 = fibG(10)

for s1 in g1:
     print(s1)  

杨辉三角生成器

def triangles(max):
    a = [1]
    n = 0;
    while n < max:
        yield a;
        b = a[:]
        for i in range(len(b) - 1):
            a[i + 1] = b[i] + b[i + 1]
        a.append(1)
        n = n+1


for s in triangles(5):
    print(s)
    

相关文章

  • Python学习(三)

    Python的高级特性 python中有很多高级特性,比起C/C++来说要简单许多,运用起来十分方便。 切片 通常...

  • Python高级特性

    切片slice取指定索引范围的操作:[0:10:2]-->意为从第一个元素到第11个元素,元素之间隔2 迭代ite...

  • python 高级特性

    1.切片对取数据很方便,如取一个list的前n个元素,没有接触到切片的,可以使用循环,但是用切片就会很简单: 也支...

  • Python高级特性

    切片 迭代 列表生成式 生成器 generator generator:按照某种算法推算出来结果,是一种一边循环一...

  • Python——高级特性

    #!/usr/bin/python # -*- coding:UTF-8 -*- __author__ = 'wx...

  • python高级特性

    python高级特性 iteration迭代 对list,tuple的遍历被称为迭代。对list实现类似Java那...

  • python高级特性

    一、列表生成器 1. 形式: [表达式 for ... in 可迭代类型 [if expression] ] 2....

  • Python 高级特性

    切片 迭代 列表生成式 生成器 迭代器

  • Python高级特性

    掌握了Python的数据类型、语句和函数,基本上就可以编写出很多有用的程序了。 比如构造一个1, 3, 5, 7,...

  • python高级特性

    1、切片(slice)L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3...

网友评论

      本文标题:Python高级特性

      本文链接:https://www.haomeiwen.com/subject/anmsuxtx.html