:::danger 之前从OneNote转过来的笔记,暂未排版整理,日后整理……咕咕咕~ :::

一、基本语法

  1. 大事谷歌;小事百度【建立良好的编程式思维】
  2. PEP8中的一些良好约定【编程规范】
  3. 字符串格式化:
    print(‘%s—%d—%s’%(‘wuzutao’,20,’尼采般地抒情’))
    a. %i是什么格式的那啥?‘
  4. 强制性类型转换:类C
  5. 时间和日期:
    from datetime import datetime
    dt=datetime(2019,5,12,9,20)
    print(dt.year,dt.month,dt.day)

    2019 5 12 dt.strftime(‘%Y/%m/%d %H:%M’)

    datetime格式转化为字符串

    ‘2019/05/12 09:20’ datetime.strptime(‘20161203’, ‘%Y%m%d’)

    字符串转化为datetime格式

    datetime.datetime(2016, 12, 3, 0, 0)

  6. pass函数
    def f():
    #TODO: test pass
    pass

  7. 异常的处理
    def test(x,y):
    try:
    print(y/x)
    except:
    print(‘输入的信息有误!’)

    test(2,8) test(‘e’,8)

  8. range和range的区别!!!

  9. 对象传递和拷贝【类似C语言中的指针】
    #变量传递、列表传递和C类似
    #深拷贝和浅拷贝
    import copy
    a = [[1, 2, 3], [4, 5, 6]]
    b = a
    c = copy.copy(a)
    d = copy.deepcopy(a)
    print (‘a-id:’,id(a))#id相当于内存里面的地址
    print (‘b-id:’,id(b))
    print (‘c-id:’,id(c))
    print (‘d-id:’,id(d))
    a.append(15)
    a[1][2] = 10
    print (a)
    print (b)
    print (c)
    print (d)

  10. a-id: 2171119139144
    b-id: 2171119139144
    c-id: 2171119848136
    d-id: 2171119140744
    [[1, 2, 3], [4, 5, 10], 15]
    [[1, 2, 3], [4, 5, 10], 15]
    [[1, 2, 3], [4, 5, 10]]
    [[1, 2, 3], [4, 5, 6]]

二、数据结构

元组

  1. #转换为元组(list->tuple, string->tuple)
  2. l = [1, 2, 3]
  3. print (tuple(l))
  4. str = ('Hello ChinaHadoop')
  5. print (tuple(str))
  6. >>>(1, 2, 3) ('H', 'e', 'l', 'l', 'o', ' ', 'C', 'h', 'i', 'n', 'a', 'H', 'a', 'd', 'o', 'o', 'p')
  7. tup1 = (1, 2, 3)
  8. #嵌套元组:
  9. tup2 = ((1, 2, 3), (4, 5))
  10. print (tup2)
  11. #合并元组:
  12. tup1 + tup2
  13. #拆包
  14. def test_1():
  15. r=(2,4,5,32)
  16. return r
  17. a, b, _, f=test_1()
  18. print(f)
  19. >>> 32
  20. # 元组列表迭代
  21. tuple_lst = [(1, 2), (3, 4), (5, 6)]
  22. for x, y in tuple_lst:
  23. print (x+y)
  24. >>>3 7 11
  25. # 计数器
  26. 列表/元组.('需要查找里面的某个对象的个数')

列表

  1. list里面可以有不同类型的元素
  2. #合并列表
  3. lst_1=[352,2352,3,556]
  4. lst_2=['gew','f']
  5. >lst_3 = lst_1 + lst_2
  6. >lst_1.extend(lst_2)
  7. #sort函数和sorted函数
  8. list_1=[23,54,346,222,4,1]
  9. print(list_1.sort()) #查查版本
  10. print(sorted(list_1)) #sorted是新起的一个列表
  11. lst_6 = ['Welcome', 'to', 'Python', 'Data', 'Analysis', 'Course']
  12. lst_6.sort()
  13. print (lst_6)【!!!!打印出来是none===查查版本】
  14. >>>['Analysis', 'Course', 'Data', 'Python', 'Welcome', 'to']
  15. lst_6.sort(key = len, reverse=True)
  16. print (lst_6)
  17. >>>['Analysis', 'Welcome', 'Course', 'Python', 'Data', 'to']

字典

  1. #合并字典
  2. dict1 = {1:'huhuhu'}
  3. dict2 = {4: 'new1', 5: 'news'}
  4. dict1.update(dict2)
  5. #通过多个列表创建字典
  6. dict_3 = {}
  7. l1 = [32,543,6,2,7,4]
  8. l2 = reversed(l1)
  9. for i1, i2 in zip(l1, l2):
  10. dict_3[i1] = i2
  11. print (dict_3)
  12. >>>{32: 4, 543: 7, 6: 2, 2: 6, 7: 543, 4: 32}
  13. '''hash函数来判断某个对象是否可以做键'''
  14. '''位置赋值;默认赋值;关键字赋值——format'''
  15. '''遍历字典的方式变了:keys,values,items'''
  16. 天行九歌={'韩非':'逆鳞','卫庄':'鲨齿','盖聂':'渊虹'}
  17. print(天行九歌)
  18. for ren,jian in 天行九歌.items():
  19. print('{}--{}'.format(ren,jian))
  20. >>>
  21. {'韩非': '逆鳞', '卫庄': '鲨齿', '盖聂': '渊虹'}

集合

  1. a1=[1,3,4,1,35,2352,75]
  2. b1=[3,2352,24354,4332432,54]
  3. a=set(a1)
  4. b=set(b1)
  5. print(a)
  6. print(b)
  7. a | b#并;a & b#交;a - b#呃。。。;a ^ b#呃。。。;
  8. a.issubset(b)#判断子集
  9. >>>False
  10. a.issuperset(b)#判断父集
  11. >>>False

三、高级特性

推导式

  1. str_lst = ['Welcome', 'to', 'Python', 'Data', 'Analysis', 'Course']
  2. result = [x.upper() for x in str_lst if len(x) > 4]
  3. print (result)
  4. >>>['WELCOME', 'PYTHON', 'ANALYSIS', 'COURSE']

多函数模式

  1. str_lst = ['$1.123', ' $1123.454', '$899.12312']
  2. def remove_space(str):
  3. """
  4. remove space
  5. """
  6. str_no_space = str.replace(' ', '')
  7. return str_no_space
  8. def remove_dollar(str):
  9. """
  10. remove $
  11. """
  12. if '$' in str:
  13. return str.replace('$', '')
  14. else:
  15. return str
  16. def clean_str_lst(str_lst, operations):
  17. """
  18. clean string list
  19. """
  20. result = []
  21. for item in str_lst:
  22. for op in operations:
  23. item = op(item)
  24. result.append(item)
  25. return result
  26. clean_operations = [remove_space, remove_dollar]
  27. result = clean_str_lst(str_lst, clean_operations)
  28. print (result)
  29. >>>['1.123', '1123.454', '899.12312']

匿名函数

  1. str_lst = ['Welcome', 'to', 'Python', 'Data', 'Analysis', 'Course']
  2. str_lst.sort(key=lambda x:len(x)) # sort by length
  3. print (str_lst)
  4. str_lst.sort(key=lambda x:x[-1]) # sort by the last letter
  5. print (str_lst)
  6. >>>
  7. ['to', 'Data', 'Python', 'Course', 'Welcome', 'Analysis']
  8. ['Data', 'Course', 'Welcome', 'Python', 'to', 'Analysis']

迭代器

  1. def gen_test():
  2. for i in range(3):
  3. yield i
  4. gen = gen_test() #此时不执行生成器
  5. type(gen)
  6. for i in gen:
  7. print(i)
  8. #用意何在呢??!!
  9. >>>0 1 2

四、常用函数

序列函数&zip使用

  1. a. enumerate函数
  2. list_11 = ['Welcome', 'to', 'Python', 'Data', 'Analysis', 'Course']
  3. for i, item in enumerate(lst_6):
  4. print ('%i-%s' %(i, item))
  5. >>>
  6. 0-Analysis
  7. 1-Welcome
  8. 2-Course
  9. 3-Python
  10. 4-Data
  11. 5-to
  12. str_dict = dict((i, item) for i, item in enumerate(list_11))
  13. print (str_dict)
  14. >>>{0: 'Welcome', 1: 'to', 2: 'Python', 3: 'Data', 4: 'Analysis', 5: 'Course'}
  15. b. zip压缩
  16. lst_6 = ['Welcome', 'to', 'Python', 'Data', 'Analysis', 'Course']
  17. lst_8 = ['a', 'b', 'c']
  18. zip_lst = zip(lst_6, lst_8)
  19. print(list(zip_lst))
  20. #方式一:直接转化为列表
  21. print(dict(list(zip_lst)))
  22. #方式二:转化为字典
  23. for i in zip_lst:
  24. print (i)
  25. #方式三:直接遍历
  26. 解压:
  27. print(*zip_lst)
  28. print(lst_6)
  29. c. reversed逆序输出

函数式编程

  1. a. #函数可以作为变量使用;也可以将函数作为参数使用
  2. import math
  3. def func_add(x, y, f):
  4. """
  5. functional addition
  6. """
  7. return f(x) + f(y)
  8. print (func_add(4, 25, math.sqrt))
  9. print (func_add(-4, 25, abs))
  10. >>>7.0 29

map和reduce

  1. a. '''map函数'''
  2. list_1=[1,4,9]
  3. aaa = [x**2 for x in list_1]
  4. print (aaa)
  5. bbb = map(math.sqrt, aaa)
  6. print (bbb)
  7. >>>
  8. [1, 16, 81]

filter函数

  1. a. 天行=['韩非','卫庄','张良','盖聂','逆鳞']
  2. def fx(x):
  3. y=['逆鳞']
  4. if x in y:
  5. return x
  6. filtered_lst = filter(fx,天行)
  7. print(天行)
  8. print(list(filtered_lst))
  9. #注意python2和3的区别,很多时候要区别出来列表等序列,加上list很有必要
  10. >>>
  11. ['韩非', '卫庄', '张良', '盖聂', '逆鳞']
  12. ['逆鳞']