• 10.Python(高级特性)


    一.切片

    1,取一个列表的前三个元素

    L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
    print(L[0:3])

     

    L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。

    如果第一个是索引0,还可以省略。L[:3]

    2.倒数切片

     倒数第一个元素的索引是-1

    3.例子

    L = list(range(100))
    print("前十个数",L[:10])
    print("后十个数",L[-10:])
    print("前11到20个数",L[10:20])
    print("前十个数,每两个取一个",L[:10:2])
    print("所有数,每5个取一个",L[::5])

    4.tuple也是一种list,唯一区别的是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:

     5.字符串也可以看成一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

     6.练习,利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:

    第一种方法:

    def trim(s):
        if s =='':
            return s
        else:
            while s!='' and s[0]==' ':
                s=s[1:]
            while s!='' and s[-1]==' ':
                s=s[:-1]
            return s
    print(trim(" sss "))

    第二种方法:使用递归

    def trim(s):
        if s == '':
            return s
        elif s[0] == ' ':
            return trim(s[1:])
        elif s[-1] == ' ':
            return trim(s[:-1])
        else:
            return s
    
    print(trim(" sss "))

    二、迭代

    1、如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。

    可以看出,Python的for循环抽象程度要高于C的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。

    2、list这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代:

    因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

    默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()

    3.由于字符串也是可迭代对象,因此,也可以作用于for循环:

    4、判断一个对象是都是可迭代对象,方法是通过collections模块的Iterable类型判断:

    5、Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:

    6、上面的for循环里,同时引用了两个变量,在Python里是很常见的,比如下面的代码:

    7.使用迭代查找一个list中最小和最大值,并返回一个tuple

    def findMinAndMax(L):
        max=L[0]
        min=L[0]
        for i in L:
            if i>max :
               max=i
            elif i<min:
               min=i
        return max, min
    L=[1,2,3,5,8,9,0]
    print(findMinAndMax(L))

    三、列表生成器

    1、列表生成器,要生成的元素放到前面,后面跟上for循环,就可以把list创建出来

    要生成[1x1, 2x2, 3x3, ..., 10x10]

    2、for循环后面还而已加上if判断,这样可以筛选出仅偶数的平方

      还可以使用两层循环

    3、for循环其实可以同时使用两个甚至多个变量,比如dictitems()可以同时迭代key和value。因此,列表生成式也可以使用两个变量来生成list:

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

    四、生成器

    练习

    def triangles():
        l = [1]
        while True:
            yield l
            l = [0]+l+[0]  #首尾加0,用于边界的计算
            l = [l[i]+l[i+1] for i in range(len(l)-1)]
            #l[i]+l[i+1] 前一个值和后一个值相加计算出下一个值
            #for i in range(len(l)-1) 循环获取生成的索引值
            #range(len(l)-1) 获得l的全部索引值,因为计算方式是当前值和后一个值相加,避免尾部越界所以要减一
    
    n = 0
    results = []
    for t in triangles():
        results.append(t)
        n = n + 1
        if n == 10:
            break
    for t in results:
    print(t)
  • 相关阅读:
    SettingWithCopyWarning
    统计运算
    数据清洗
    dataframe 索引
    那些拯救我的快捷键
    如何拒绝那些哭天抢地向你求救结果把你坑了的同事?
    Linux 笔记
    数据可视化:桑基图
    敏捷
    持续集成的概念
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/13767706.html
Copyright © 2020-2023  润新知