zoukankan      html  css  js  c++  java
  • Python函数高级特性

    切片(截取元素,可操作list,tuple,string)
    L = list(range(100))  # [0,1,2,3,...,99]
    L[0:10] = L[:10]  # 截取前10个数 [0,1,2,...,9]
    L[-10:]  # 截取后10个数    [90,91,92,...,99]
    L[10:20]  # 截取10-20位置的元素 [10,11,12,13,...,19]
    L[:10:2]  # 前10个数,每两个取一个 [0,2,4,6,8]
    L[::5]  # 所有数,每5个取1个 [0,5,10,...,95]
    L[:]  # 复制原数组
    迭代 for...in...
    • 迭代dict
    d = {'a': 1, 'b': 2, 'c': 3}
    # 默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()
    • 迭代list
    for i, value in enumerate(["a", "b", "c"]):
        print(i, value)  # 迭代list需要用到enumerate函数
    # 0 a
    # 1 b
    # 2 c
    列表生成式
    list(range(1,11))   #生成[1,2,3,..,10]
    [x*x for x in range(1,11)] #生成[1*1,2*2,3*3,...,10*10]
    # 列表生成式跟if判断
    [x*x for x in range(1,11) if x%2 ==0] #生成[2*2,4*4,6*6,8*8,10*10]
    # 双层循环生成全排列
    [x+y for x in "ABC" for y in "XYZ"] #生成['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
    生成器:genterator(一边循环一边计算,如果一个函数中包含yield关键字,则该函数就是一个generator)
    • 把列表生成式的[]该为()即可
    g = (x*x for x in range(1,10))
    # 调用方法:
    next(g) #每次调用next()方法来获取元素,每次只能获取一个
    for n in g: #for循环内部会不断调用next()方法
        print(n)
    • 使用yield关键字
    def fib(max):
        n, a, b = 0, 0, 1
        while n < max:
            yield b
            a, b = b, a + b
            n = n + 1
        return 'done'
    迭代器
    • 可直接作用于for循环的对象 Iterable
    from collections import Iterable
    isinstance([], Iterable)  #True 使用isinstance()来判断是否是Iterable对象
    • 可被next()调用并不断返回下一个值的对象 Iterator
    from collections import Iterator
    isinstance((x for x in range(10)), Iterator)    #使用isinstance()来判断是否是Iterator对象,Iterator对象是惰性求值,只有在需要时才会求值
     
  • 相关阅读:
    Linux服务器因为Nginx日志access.log文件过大项目无法访问的问题
    【译】StackExchange.Redis 中文文档(二)配置
    【译】StackExchange.Redis 中文文档(一)基础
    Redis应用(一)实时在线用户
    [.NET]Thread与Task的区别
    并查集(UnionFind)技巧总结
    [LeetCode题解]377. 组合总和 Ⅳ
    [LeetCode题解]216. 组合总和 III
    [LeetCode题解]39. 组合总和
    [LeetCode题解]40. 组合总和 II
  • 原文地址:https://www.cnblogs.com/sghy/p/8074101.html
Copyright © 2011-2022 走看看