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=====')

 

posted @ 2018-01-09 17:12  veryvalley  阅读(141)  评论(0编辑  收藏  举报