04python_senior

来源:互联网 发布:什么录屏软件好 编辑:程序博客网 时间:2024/05/22 00:53

Python学习笔记

04python_senior

  • iterate
#-*- coding:utf-8 -*-print("iteration")l = [1,2,3,4,5,5,6]for i in l:    print(i)kv = {"city":"shanghai","name":"Aono","computer":"ThinkPad"}for key in kv:    print(key)for value in kv.values():    print(value)#内部编码估计用的是hash 每次一样的输出顺序  本来应该是随机的for k,v in kv.items():    print(k,v)for a in "123dnfoiad":    print(a)for a in (1,23,4,5,6,123):    print(a)print("判断是否可以被迭代")from collections import Iterableprint(isinstance("abc",Iterable))print(isinstance("123",Iterable))print(isinstance(123,Iterable))print("变成Java类型的那种有索引编号的形式")for i,value in enumerate(["a","b","c"]):    print(i,value)print("实际上就是变成了tuple输出了,so esay")
  • listBuider
#-*- coding:utf-8 -*-print("列表生成式")print("********************normal**********************")l = list(range(1,11))print(l)l1 = []for x in range(1,11):    l1.append(x*x)print(l1)print("*********************list comprehensions************************")l2 = [x*x for x in range(1,11)]print(l2)l3 = [x*x for x in range(1,11) if x%2 == 0]print(l3)print("全排列的实现,一句代码足矣")l4 = [m + n for m in "ABC" for n in "zxy"]print(l4)print("*************************列出目录*********************************")import osdirl = [d for d in os.listdir(".")]#该方法可以列出文件和目录print(dirl)dirl1 = [d for d in os.listdir("..")]print(dirl1)dirl2 = [d for d in os.listdir("/")]print(dirl2)dirl3 = [d for d in os.listdir("C:/")]print(dirl3)dirl4 = [d for d in os.listdir("C:\\")]print(dirl4)#nice  想弄的东西都弄出来了   哦吼吼吼d = {"x":"A","y":"B","z":"C"}for k,v in d.items():    print(k,"=",v)print("变身")print([k+"="+v for k,v in d.items()])#注意加号!!!!!加号是加在了字符串之间的  很好玩呐print([s.lower() for s in dirl4])print("*************************联系啦****************************")ls = ["FIUSADA",12,"UYIuIojounl","UIOLnlkadnflanKBIUoadn"]print([l for l in ls if isinstance(l,str)])
  • slice
l = [1,2,3,4,5,6,7,8,9]print(l[0],l[1],l[2])print("麻烦的要死")print(l[0:3])#前三个但不包括第四个,输出的是listprint(l[:3])print(l[:-1])print(l[1:2])s = list(range(100))print(s)print(s[::3])print(s[25:89:2])str1 = "efauicsdfiaysdsainlsamc"print(str1[:6])print(str1[-8:])t = tuple(range(50))print(t)print(t[0:15])#看来无论是什么东西,切片这东西和具体的什么类型是没有任何关系的都是用[]这个作为符号的
  • generator
l = [x for x in range(1,11)]print(l)g = (x for x in range(1,11))print(g)#<generator object <genexpr> at 0x0054D3F0>print("next",next(g))for x in g:    print(x)#第一个值已经被next取了,for循环取得的值是从第2个开始向后遍历的print("*******************************************************")def fib(max):    n,a,b = 0,0,1    while n<max:        print(b)        a,b = b,b+a        n = n+1    return "over"print(fib(20))def g(max):    n,a,b = 0,0,1    while n<max:        yield b        a,b = b,b+a        n = n+1    return "over"print(fib(20))print(next(g(6)))print(next(g(6)))print(next(g(6)))print(next(g(6)))print(next(g(6)))print(next(g(6)))print(next(g(6)))print(next(g(6)))print(next(g(6)))#这里的输出结果都是1,因为g函数每次都是新生成的##########################################################but 我们把它变成一个变量试试g1 = g(20)print(next(g1))print(next(g1))print(next(g1))print(next(g1))print(next(g1))print(next(g1))print(next(g1))print(next(g1))print(next(g1))#这回对了  生成的是一串fib数列,因为对象不是新生成的generator,而是已经定了的########################################################for g in g(6):    print(g)#这里拿不到over的返回值(return语句的返回值没有了)##########################################################print("*******************************************************")for g in g1:    try:        print(g)    except StopIteration as e:        print(e.value)        break#杨辉三角#l1 =    [1]#l2 =   [1,1]#l3 =  [1,2,1]#l4 = [1,3,3,1]def yangHui3():    a = [1]    b = [1,1]    while True:        yield a        a = b        temp = [1,1]        m = 1        while m<=len(b)-1:            item = b[m-1]+b[m]            temp.insert(m,item)            m = m+1        b = tempmax = 1for x in yangHui3():    print(x)    max = max+1    if max>10:        break#再来看看大神写的def yangHui3_plus():    b = [1]    while True:        yield b        b = [1]+[b[i]+b[i+1] for i in range(len(b)-1)]+[1]max = 1for x in yangHui3_plus():    print(x)    max = max+1    if max>10:        break#思考过程,range出的是从0开始的list,而且用的是for循环,如果list为空也就不遍历了,甚是巧妙lisa = [1,1]print(len(lisa))for i in range(len(lisa)-1):    print("here",i)print(lisa[0])
  • Iterator
0 0