python基础回顾

1.Ipython魔术命令 

  1. %timeit //多次执行一条语句,并返回平均时间,%%time->多条语句,用于测试一条语句用了多少时间 %time //返回执行一条语句的时间 %rest //删除当前空间的全部变量 %run*.py //在IPython中执行python脚本 魔术命令+显示文档 如:%time?

2.变量不需要指定类型,但是仍然是"强类型语言",只是不显示地表示

  注意python中的变量是没有类型的,只有对象才有类型

  如:x=5,变量x是没有类型的,而是指向整形对象5的一个变量

3.可变与不可变

  大部分python对象是可变的(mutable),e.g.列表、字典,自定义的类

  字符串和元组是不可变的(immutable)

4.字符串

  单引号(''),双引号("")均可

  三引号()一般用于放置文档说明(docstring)或多行字符串

  字符串格式化,(%)

  类型转换str bool int float

5.时间和日期

  datetime模块

  strftime将datetime类型格式化为字符串

6.时间和日期

  strptime将字符串解析为datetime类型

7.if  elif   else

8.for循环    for item in collection

        continue,break以及他们之间的区别:continue是跳出本次循环,break是跳出整个循环

9.while循环

10.没有++,--,可用+=1,-=1替代

11.pass用于占位:python不允许空代码块

12.异常处理:try    except

13.range和xrange

  生成整数列表:

  xrange比range效率高,但是xrange不会预先生成列表,而是一个迭代

14.关于python中的引用

  变量赋值、传参是值传递

  列表、字典的复制、传参是传引用

15.浅拷贝和深拷贝

  浅拷贝的效果:[:]切片操作,copy()。只拷贝父对象,不拷贝对象内部的子对象

  深拷贝:同时拷贝父对象以及子对象

二、Python数据结构

-------------------------------------------------------------------

  1.元组:

一维、定长、不可变的对象序列

    创建元组

    转换为元组,list->tuple,string->tuple

    访问元组

    合并元祖

  拆包

    函数同时返回多个值

    元组列表迭代

  常用方法  count

    返回指定值的次数

  1. 创建元组:
  2. tuple = ,,
  3. print tuple
  4. (,,)
  5. #嵌套元组
  6. tup2 =(,,)(,)
  7. print tup2
  8. ((,,),(,))
  9. 转换为元组:list->tuple,string->tuple
  10.  
  11. l=[,,]
  12. print tuple(l)
  13. (,,)
  14.  
  15. str="Hello ChinaHadoop"
  16. ('H','e','l','l','o',' ','C','h','i','n','a','H','a','d','o','o','o','p')
      #访问元组
      tup3= tuple(str)
      print tup3[4]
      o
      #合并元组
      tup1+tup2
      ((1,2,3),(1,2,3),(4,5))
      #拆包
      a,b,c= tup1
      print b
      2
      #函数返回多个值
      def return_mutiple():
        t=(1,2,3)
        return t
      a,_,c = trturn_mutiple()  //元组里面,如果不需要某个值的时候,可以用下划线代替,就是不需要这个值了
      print c
      3
      #元组的迭代
      tuple_lst = [(1,2),(3,4),(5,6)]
      for x, y tuple_lst;
        print x+ y
     3
    7
    11
      #常用方法 count,返回指定值的次数
      tup3= tuple(str)
      print tup3[4]
      o

   2.列表

  变长,可变

  创建列表  []

  转换为列表,tuple->list

  添加、移除元素,append,insert,pop,remove

  合并列表+,extend

  排序sort操作(注:就地排序,无需创建新的对象)  结果不包含stop_idx的元素

  1. #列表
  2. 创建列表
  3. lst_1=[,,,'a','b',(,)]
  4. print lst_1 //[1,2,3,'a','b',(4,5)]
  5.  
  6. lst_2=range(,)
  7. print lst_2 //[1,2,3,4,5,6,7,8,9]
  8.  
  9. #添加、移除元素
  10. lst_4=range()
  11. #末尾添加,在末尾添加元素
  12. lst_4.append()
  13. print lst_4 //[1,2,3,4,5,6,7,8,9,11]
  14. #在指定位置插入元素
  15. lst_4.insert(,)
  16. print lst_4 //[1,2,3,4,5,6,7,8,9,11]
  17.  
  18. #删除指定位置的元素并返回
  19. item=lst_4.pop()
  20. print ite //
  21. print lst_4 //[0,1,2,3,4,12,6,7,8,9,11]
  22. #删除指定的值
  23. lst_4.remove()
  24. print lst_4 //[0,1,2,3,4,6,7,8,9,11]
  25. #合并列表
  26. lst_3=lst_1 + lst_2
  27. print lst_3 //[1,2,3,'a','b',(4,5),1,2,3,4,5,6,7,8]
  28.  
  29. lst_1.extend(lst_2)
  30. print lst_1 //[1,2,3,'a','b',(4,5),1,2,3,4,5,6,7,8]
  31.  
  32. #操作序列
  33. import random
  34. lst_5=range()
  35. random.shuffle(lst_5)
  36. print lst_5 //[7,8,5,3,2,0,4,6,9,1]
  37. lst_5.sort() //sort就地排序,没有创建新的对象
  38. print lst_5 //[0,1,2,3,4,5,6,78,9]
  39.  
  40. lst_6= ['welcome','to','Python','Data','Analysis','Course'] //按照字典顺序进行排序
  41. print lst_6 //['Analysis','welcome','course','python','Data','to']
  42.  
  43. #按照字符串从长到短进行排序
  44. lst_6.sort(key=len,reverse=True)
  45. print lst_6 //['Analysis','Welcome','Course','Python','Date','to']
  46.  
  47. #切片操作
  48. print lst_5 //[0,1,2,3,4,5,6,7,8,9]
  49. print lst_5[:] //[1,2,3,4]末尾的序列号是不包含在里面的,所以只是输出[1,2,3,4]
  50. print lst_5[:] //[5,6,7,8,9],从5直接输出到末尾的
  51.  
  52. print lst_5[:] //[0,1,2,3,4]输出从第一个元素到最后一个元素,不包括最后一个元素
  53.  
  54. print lst_5[-:] //[5,6,7,8,9],从倒数第五个元素输出到最后一个元素
  55. print lst_5[-:-] //[5,6,7]从倒数第五个元素输出到倒数第二个元素,不包括倒数第二个元素
  56. print lst_5[::] //[0,2,4,6,8],从0开始输出元素,步长为2
  57. print lst_5[::-] //[9,8,7,6,5,4,3,2,1,0]倒序输出所有的元素

3.常用的序列函数

  (1)enumerate,for循环时记录索引,逐个返回元组(i,item)

  (2)sorted 返回新的有序列表,区别:list中的sort()是就地排序

  (3)zip"压缩"将多个序列对应位置的元素组成元组

  (4)zip(*元组列表)"解压缩",zip的逆操作

  (5)reversed逆序迭代,可以配合list返回逆序列表

  1. #enumerate
    lst_6=['welcom','to','Python','Data','Analysis','Course'] //拆包操作,拿到i和值拿到
  2. for i , item in enumerate(lst_6):
  3. print '%i-%s' %(i,item)
  4. -welcom
  5. -to
  6. -python
  7. -Data
  8. -Analysis
  9. -Course
  10.  
  11. #sorted
    import random
    lst_5=random(10)
    random.shuffle(lst_5)
    print lst_5  //[6,2,5,7,0,1,4,3,9,8],得到的是乱序的
  12.  
  13. #sorted
    lst_5_sorted = sorted(lst_5)
    print lst_5  //[6,2,5,7,0,1,4,3,9,8]
  1. print lst_5_sorted  //[0,1,2,3,4,5,6,7,8,9]
  2.  
  3. #zip压缩
    lst_6=['welcom','to','Python','Data','Analysis','Course']
    lst_7=range(5)
    lst_8=['a','b','c']
    zip_lst=zip(lst_6,lst_8,lst_7)    //[('welcome','a','0'),('to','b',1),('python','c',2)]
    #zip解压缩
    zip(*(zip_lst))
    [('welcom','to','python'),('a','b','c'),(0,1,2)]
  4.  
  5. #reversed逆序的迭代
    list(reserved(lst_6))
    ['Course','Analysis','Data','pyhon','to','welcome']

4.字典dict

{key1:value1,key2:value2}

通过多个列表创建字典

哪些可以做"键"

  整数、浮点数、字符串或者元组

  可"哈希"的对象,hash

  1. #创建字典
  2. empty_dict={}
  3. dict1={'a':1.2:'b','':[,,]} //初始化一个字典
  4. print empty_dict {}
  5. print dict1 {'a:1',:'b','':[,,]}
  6. #插入元素
  7. dict1[]=(,)
  8. print dict1 //{'a':1,2:'b',4:(4,5),'3':[1,2,3]}
  9.  
  10. #删除元素
  11. del dict[]
  12. print dict1 //{'a':1,4:(4,5),'3':[1,2,3]}
  13. #通过pop来删除元素
  14. a_value = dict1.pop('a')
  15. print a_value //a_value
  16. print dict1 //{4:(4,5),'3':[1,2,3]}
  17.  
  18. #获取键、值列表
  19. print dict1.keys() //[4,'3']
  20. print dict.values() //[(4,5),[1,2,3]]
  21.  
  22. #合并字典
  23. dict2={:"new1",:'new5'}
  24. dict.update(dict2)
  25. print dict1 //{'3':[1,2,3],4:'new1',5:'news'}
  26.  
  27. #通过多个列表创建字典
  28. #普通方法
  29. dict_3={}
  30. l1=range()
  31. l2=list(reversed(range()))
  32. for i1,i2 in zip(i1,i2):
  33. dict_3[i1]=i2
  34. print dict_3
  35. //{0:9,1:8,2:7,3:6,4:5,5:4,6:3,7:2,8:1,9:0}
  36.  
  37. dict_4=dict(zip(l1,l2))
  38. print dict_4
  39. //{0:9,1:8,2:7,3:6,4:5,5:4,6:3,7:2,8:1,9:0}
  1. hash() //
  2. hash('test hash') //-520327859
  3. hash((,,)) //
  4. hash([,,])

5.集合set

创建集合{}

集合操作,交并差异或

  1. a=set(range())
  2. print a //set([0,1,2,3,4,5,6,7,8,9])
  3.  
  4. b=set(range(,))
  5. print b //set([5,6,7,8,9,10,11,12,13,14])
  6. #集合的并运算
  7. a | b
  8. {,,,,,,,,,,,,,,}
  9.  
  10. #集合的交运算
  11. a & b
  12. {,,,,}
  13.  
  14. #a -b
  15. {,,,,}
  16.  
  17. #异或运算
  18. a ^ b
  19. {,,,,,,,,,}
  20.  
  21. #判断是否为子集、父集
  22. a.issubset(b) //a是b的子集吗
  23. False
  24. #
  25. a.issuperset(b) //a是b的父集吗
  26. False

6.Python高级特性

-------------------------------------------------------

  (1)集合推导式

      列表推导式:使用一句表达式构造一个新列表,可包含过滤、转换等操作

  1. [exp for item in collection if contion]
  2.  
  3. %%timeit
    #普通方法
    result1 = []
    for i in range(10000):
      if i%2==0:
        result1.append(i)
  4.  
  5. #
    %%timeit
    #列表推导式的方法
    result2 = [i for i in range(10000) if i%2 ==0 ]
  6.  
  7. #将集合中的字符串全部都大写或者全部都小写
    str_lst=["welcome","to","python","data","analyse","course"]
    result3=[x.upper() for x in str_lst if len(x)>4]
    print result3    //["WELCOME","PYTHON","ANALYSIS","COURSE"]

      字典推导式: 

  1. {key_exp :value_exp for item in collectiob if condition}
    dict1={key:value for key,value in enumerate(reversed(range(10)))}
    print dict1
    {0:9,1:8,2:7,3:6,4:5,5:4,6:3,7:2,8:1,9:0}

      集合推导式:

  1. {exp for item in collection if condition}
    set1={i for i in range(10)}
    print set1    //set([0,1,2,3,4,5,6,7,8,9])

      嵌套列表推导式:按照嵌套顺序理解

  1. lists=[range(),range(,)]
  2. print lists //[[0,1,2,3,4,5,6,7,8,9],[10,11,12,13,14,15,16,17,18,19]]

  (3)函数列表

python中皆是对象  ,函数也是对象, [func1,func2]

匿名函数lambda

  1. f = lambda x:x**
  2. f() //4
  1. str_lst=["Welcome","to","python","Data","Analysis","courses"]
  2. str_lst.sort(key=lambda x:len(x)) #sort by length
  3. print str_lst
  4.  
  5. str_lst.sort(key=lambda x:x[-]) #sort by last letter
  6. print str_lst #按照每个单词最后一个字母进行排序

  (4)生成器

  1. def gen_test():
  2. for i in range():
  3. yield i
  4. gen =gen_test() #这个时候不执行生成器
  5. type(gen) #generator
  6.  
  7. for i in gen : #直到迭代的时候才执行

(5)函数式编程

  函数本身可以赋值给变量,赋值后变量为函数

  允许将函数本身作为参数传入另一个函数

  允许返回一个函数

(6)map/reducce

  map(func,lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表返回

  reduce(func(x,y),lst),其中func必须有两个参数,每次计算的结果继续和序列的下一个元素做累积计算。

  lst=[a1,a2,a3,..........,an]

  1. 函数式编程
  2. #函数本身也可以赋值给变量
  3. import math
  4. math.sqrt() //5.0
  5.  
  6. math.sqrt
  7. <function math.sqrt>
  8.  
  9. fun=math.sqrt
  10. fun
  11. <function math.sqrt>
  12. fun() //3.1666666
  13.  
  14. 将函数作为参数
  15. def func_add(x,y,f):
  16.  
  17. #map
  18. x_2_lst = [x** for x in range()]  //对于0-9中的所有元素全部来求3次方
  19. print x_2
  20. [,,,,,,,,,]
  21.  
  22. x_sqrt_lst=map(MATH.SQRT,X_2)      //对于x_2列表,全部用来求开平方的操作
  23. PRINT X_2_FLOAT_LST
  24. [0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0]
  25.  
  26. X_2-float_lst=map(float,x_2)      //对于x_2列表,全部将其转换为float的数据类型
  27. print x_2_float_lst
  28. [0.0,1.0.4.0,9.0,16.0,25.0,36.0,49.0,64.0,81.0]  
  29.  
  30. x_2_str_lst=map(str,x_2)
  31. print x_2_str_lst
  32. ['','','','','','','','','','']  
  1. //对于x_2类型的数据,全部将其转换为字符串类型

  reduce(func(x,y),lst),其中func必须有两个参数。每次dunc计算的结果继续和序列的下一个元素做累积计算

  1. lst = [a1,a2,a3,.............,an]
  2. reduce(func(x,y),lst)
  3. <===>func(func(func(a1,a2),a3),.................,an)
  1. str_lst=map(str,range()) #将数组转换成字符串类型
  2. print str_lst
  3.  
  4. def make_num(str1,str2)
  5. return int(str1)* + int(str2) //将字符串转化为整数
  6. result = reduce(make_num,str_lst)
  7. print result
  8.  
  9. ['','','','','']

(7)filter筛选器

  筛选序列

  filter(func,lst),将func作用于lst的每个元素,然后根据返回值是True或者是False来判断是保留还是丢弃

  map,reduce和filter中的函数变量均可以是匿名函数

  1. number_lst=range(-,)
  2.  
  3. def is_negative(x):
  4. return x<
  5. filtered_lst=filter(is_negative,number_lst)
  6.  
  7. print number_lst
  8. [-.....................]
  9.  
  10. [-........................-]

 

python学习笔记(1):python基础的更多相关文章

  1. 【Python学习笔记一】基础环境安装:idea+python

    IDEA 安装 1.下载IDEA   官网下载地址: https://www.jetbrains.com/idea/ 2.安装的时候配置基本选择默认配置就行 参考链接:https://blog.csd ...

  2. python 学习笔记 9 -- Python强大的自省简析

    1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...

  3. Python学习笔记 - day12 - Python操作NoSQL

    NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...

  4. python 学习笔记一——Python安装和IDLE使用

    好吧,一直准备学点啥,前些日子也下好了一些python电子书,但之后又没影了.年龄大了,就是不爱学习了.那就现在开始吧. 安装python 3 Mac OS X会预装python 2,Linux的大多 ...

  5. python学习笔记(一):python简介和入门

    最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...

  6. python学习笔记(python简史)

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交 ...

  7. python学习笔记(1)--python特点

    python诞生于复杂的信息系统时代,是计算机时代演进的一种选择. python的特点,通用语言,脚本语言,跨平台语言.这门语言可以用于普适的计算,不局限于某一类应用,通用性是它的最大特点.pytho ...

  8. python学习笔记之——python模块

    1.python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  9. [Python学习笔记1]Python语言基础 数学运算符 字符串 列表

    这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...

  10. Python学习笔记一(基础信息)

    目录 输入输出 数据类型和变量 整数 浮点数 字符串 布尔值 空值 变量 常量 小结 欢迎关注我的博客我在马路边 说明:此笔记不是从零开始,在学习的过程中感觉需要记录一些比较重要和需要重复浏览的信息, ...

随机推荐

  1. UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)

    题意 : 机器人要从一个m * n 网格的左上角(1,1) 走到右下角(m, n).网格中的一些格子是空地(用0表示),其他格子是障碍(用1表示).机器人每次可以往4个方向走一格,但不能连续地穿越k( ...

  2. C/C++中的转义字符

    在C语言中有三种转义字符,它们是:一般转义字符.八进制转义字符和十六进制转义字符. 1.一般转义字符 这种转义字符,虽然在形式上由两个字符组成,但只代表一个字符.常用的一般转义字符为: \a \n \ ...

  3. UML——概述

    1. 静态视图(类图)      静态视图不描述与时间相关的系统行为,这种行为在其他视图中描述,因此称之为静态试图.      静态视图用类图来实现,正因为它以类图为中心,因此也称之为类图.     ...

  4. CTSC&APIO 2017游记

    Day 0 早上4点多起床赶飞机,起床的时候发现闹钟调成下午4点的了...(虽然说早就已经被父母的洗漱声音吵醒了) 飞机上碎觉.到了北京发现比福州还热...而且北京今天意外地好天气,没有传言中的&qu ...

  5. shell java应用启动脚本(app.sh)

    #!/bin/sh # java服务中需要的jar文件或classpath路径,如业务程序.第三方jar文件log4j等 ShellAbsPath=$(cd "$(dirname " ...

  6. 解决运行webpack --config webpack.dev.config.js 报错ReferenceError: _dirname is not defined

    控制台报错信息如下 将webpack.dev.config.js中的_dirname 改为 __dirname 注意这里是两个下划线谢谢!感觉好坑

  7. 简单记录一下vue生命周期及 父组件和子组件生命周期钩子执行顺序

    首先,vue生命周期可以用下图来简单理解 当然这也是官方文档的图片,详细的vue周期详解请参考这里 然而当同时存在父子组件的时候生命周期钩子是如何执行的呢? 请看下文: 加载渲染过程父beforeCr ...

  8. js,正则实现金钱格式化

    https://blog.csdn.net/qq_36279445/article/details/78889305 https://github.com/jawil/blog/issues/30

  9. TiDB官方文档

    TiDB官方文档: https://github.com/pingcap/docs-cn TiDB 整体架构 TiDB 集群主要包括三个核心组件:TiDB Server,PD Server 和 TiK ...

  10. node_modules .bin文件夹下的文件

    node_modues/.bin文件夹下,对于一个npm包,有两个可执行文件,没有后缀名的是是对应unix系的shell脚本,.cmd文件对应的是windows bat脚本,内容都是用node执行一个 ...