• Pyhton编程技巧-namedtuple,切片,生成器,列表生成式。。。


     1 # coding=utf-8
     2 from collections import namedtuple
     3 
     4 ##NAME, AGE, SEX, EMAIL分别赋值为0,1,2,3
     5 NAME, AGE, SEX, EMAIL = xrange(4)
     6 print(NAME)
     7 
     8 stu = ("zhangsan", 18, "", "abc@abc.com")
     9 print(stu[NAME])
    10 
    11 Student = namedtuple("Student", ["NAME", "AGE", "SEX", "EMAIL"])
    12 stu1 = Student("lisi", 181, "男1", "abc@abc.com1")
    13 print(stu1.NAME)
    14 
    15 # 切片
    16 str = 'abcdefg'
    17 # 开始是0的话可以省略,:不可以省略
    18 print(str[:2])  # ab
    19 # 结束是最后的话可以省略,:不可以省略
    20 print (str[1:])  # bcdefg
    21 # 第二个:后的数据表示取值步长
    22 print (str[::2])  # aceg
    23 # 负数表示倒数
    24 print (str[-2:])  # fg
    25 
    26 ###range和xrange
    27 # range返回的是一个列表
    28 r = range(0, 100, 10)
    29 print(r)
    30 # xrange 返回的是一个xrange对象,xrange对象是可遍历的
    31 xr = xrange(0, 100, 20)
    32 print(xr)
    33 for x in xr:
    34     print x
    35 
    36 ##列表生成式
    37 
    38 # 生成新的列表
    39 pf = [x * x for x in (range(0, 10)) if x % 2 == 0]
    40 print(pf)
    41 
    42 ##dict生成式
    43 # 利用列表生成新的dict
    44 di = {x: ("%x*%x" % (x, x)) for x in (range(0, 10))}
    45 print(di)
    46 
    47 # 两层循环
    48 
    49 du = [x + y for x in 'abc' for y in 'xyz']
    50 print(du)
    51 
    52 dudict = {x: y for x in 'abc' for y in 'xyz'}
    53 print(dudict)
    54 
    55 # for循环可以有多个变量
    56 # for循环二个变量
    57 ddd = {"x": 1, "y": 2, "z": 3}
    58 for k, v in ddd.items():
    59     print ("%s=%s" % (k, v))
    60 
    61 print(ddd.items())
    62 # for循环三个变量
    63 dss = [('a', 'b', 'c'), (1, 2, 3), ('x', 'y', 'z')]
    64 print(dss)
    65 for x, y, z in dss:
    66     print ("%s:%s:%s" % (x, y, z))
    67 
    68 ###生成器###
    69 ##方法一:将列表生成式的[],n改成()
    70 g1 = (x * x for x in range(0, 10))
    71 print(g1)
    72 print(g1.next())
    73 for g in g1:
    74     print(g)
    75 
    76 
    77 ##方法二:yield语句
    78 # 函数是顺序执行,遇到return语句或者最后一行函数语句就返回。
    79 # 而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,
    80 # 再次执行时从上次返回的yield语句处继续执行。
    81 
    82 def fib(max):
    83     n, a, b = 0, 0, 1
    84     while (n < max):
    85         yield b
    86         a, b = b, a + b
    87         n = n + 1
    88 
    89 
    90 fib10 = fib(10)
    91 print(fib10.next())
    92 print(fib10.next())
    93 print("======")
    94 for f in fib10:
    95     print(f)
    96 
    97 print('======End=====')
  • 相关阅读:
    Unity---游戏设计模式(6)之策略模式
    Unity---游戏设计模式(5)之桥接模式
    Unity---游戏设计模式(3)之单例模式
    ThinkPHP钩子和行为
    如何理解ThinkPHP框架里的依赖注入
    MySql读写分离实现
    PHP 微服务集群搭建
    详解MySQL的主从复制、读写分离、备份恢复
    索引差异
    nginx高可用
  • 原文地址:https://www.cnblogs.com/veryvalley/p/8252478.html
Copyright © 2020-2023  润新知