基础知识

Python基础

  • python2和python3的区别
    输出不同:python3中print当函数用:print(..),python2中直接print即可 print ..
    从键盘输入字符不同:

  • Mac中的python
    Mac自带python2,且不能卸载 (一部分系统功能依赖这个python)
    因此装python3后,系统中就会带有两个版本python, python命令就不能只写python了,需要用python2python3来区分, pip命令也是pip2 & pip3(所以推荐使用annaconda来管理python版本)

  • python中对象有类型,变量无类型(变量可随意更改值类型)
    数字类型有:int、float、bool、complex(复数)

  • 注释
    单行注释:#
    多行注释:三对单/双引号,’’’xxx’’’或”””xxx”””

  • python中“/”做除法结果肯定是浮点数,取商为“//”,取余为“%”,x**y:x的y次方

  • 分数除法:

    1
    2
    from fraction import Fraction
    Fraction(10,3) # 分数10/3

基本数据结构

  • 字符串string
    双引号””、单引号’’括起来都是字符串
    访问字符串中元素:str[i]
    数字转字符串:str();字符串转数字:int()/float()
    求字符串长度:len()
    截取字符串:str[x:y],前包后不包
    字符->ASCII:ord('a'); ASCII->字符:chr(78)
    格式化字符串:”I like {0} and {1}”.format(62,”b”)->”I like 62 and b”

  • unhashable:不可哈希——值可改变;hashable:可哈希——值不可改变。

  • 列表(list)
    即数组,但里面元素类型可不一致,lst=[‘a’,13,”lrrr”]
    数组尾追加元素:lst.append,数组间插入元素:lst.insert(i,x)
    删除数组元素:lst.pop(i),返回值为删除的元素
    将数组元素顺序颠倒:lst.reverse()
    数组排序函数:lst.sort()
    字符串->数组:split();数组->字符串:join()

  • 元组(tuple)
    元素值不可改变的list,遍历操作与list相同
    初始化:t=(1,"ab",[123,"abc"])d=dict([("1","22"),("2","22")])用数组初始化
    优点:遍历比列表快;对数据进行“写保护”;可在字典中用作key

  • 字典(dict)
    即哈希表,以键值对存储:dic={"n1":"ab","n2":"cd","n3":12}
    键(key)不可修改,可以是字符串或元组;但键值可以更改。
    通过键访问键值:dic[‘n1’]

  • 集合(set)
    无序、不重复序列,s=set([123,'lrrr',"asd"])->s={'lrrr', 123, 'asd'}
    集合增加元素:add;删除元素:remove
    不可改变的集合:frozenset,集合一旦创建就不能再增加/删除元素。
    可进行集合的“交并补”等运算,得到新的集合。

  • range类型
    range(a,b,t):a为起点,b为终点,t为步长,是一个前开后闭的区间(包括起点不包括终点)
    注:a默认0,t默认1。
    range主要用于产生一个序列,在for in循环中很常见

    1
    2
    3
    x = range(10) #x是从0到9的一个range类型
    for i in x:
    print(i) #循环输出0-9

range转List:list(range(1,10,3))

  • List Comprehension机制

    1
    2
    3
    4
    5
    6
    # 两个用法等价
    list1 = [i for i in range(10)]

    list2 = []
    for i in range(10):
    list2.append(i)
  • 迭代器(iter)

    1
    2
    3
    4
    5
    6
    遍历操作
    while True:
    it.__next__()

    数组转迭代器:it=iter(list)
    文件流默认为可迭代对象,可直接调用__next__()
  • generator
    和可迭代类型(Iterator)类似,区别:其不保存所有值,其只计算一个值,保存一个值,计算下一个值时这个值就会被覆盖。适用于数据只使用一次的场景。
    在函数中可使用yield语句来返回一个generator,类似return语句,但区别是在调用时其并没有真正计算值,只是返回了一个generator,等到真正访问generator时才会去一个一个地计算其值。

语句

  • if语句
    1
    2
    3
    4
    5
    6
    if a==5:
    xxx
    elif a==10:
    xxx
    else:
    xxx

采用四个空格的缩进来表示语句块开始,删去缩进表示语句块结束;不要忘了冒号。
三元表达式:A = Y if X else Z

  • for语句
    1
    2
    3
    str="hello"
    for i in range(len(str)):
    print(str[i],end=' ') #输出为h e l l o

同样注意冒号,缩进

  • for else语句

    1
    2
    3
    4
    5
    for i in range(1,10,2):
    #语句块
    else :
    #for循环正常结束会执行
    #break直接跳出,不会执行else
  • while语句

    1
    2
    while a>5 :
    #while语句

函数

文件操作

  • 文件路径
    Windows中文件分隔符为\\, Linux和Mac中是/, 注意区分.
    绝对路径: Mac下绝对路径为/Users/lrrr/Dekstop(Doucuments, Downloads等), 起始为/Users/lrrr.
    相对路径: 相对是指相对于.py文件所在目录的路径, 路径中用.表示向上一级目录(..就是上两级目录).

  • 读取文件

    1
    2
    3
    4
    5
    6
    7
    8
    f = open("test.txt")
    for line in f #读取一行
    print(line)

    f = open("e:\\test.txt")
    f.read(12) #读取12个字符
    f.readline() #读取一行
    f.readlines() #按行读取文件,并存到list中
  • 写文件

    1
    2
    3
    4
    5
    6
    f = open("e:\\test.txt","w")   #先清空文件再写

    f = open("e:\\test.txt","a") #追加写
    f.write(xxx)
    #插入换行
    f.write(xxx+'\n') #win下会自动翻译为\r\n,直接在字符串中写\n没用

函数

  • seek函数
    seek(x),将文件指针移到位置x(相对文件开头)

  • 自定义函数

    1
    2
    3
    函数定义
    def funName(a,b):
    函数体
  • python函数参数传递

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def fun(x):
    x=2
    a=3
    fun(a)
    print(a) #输出3

    def fun(x):
    x.append("two")
    b=["one"]
    fun(b)
    print(b) #输出["one","two"]

原因:python中变量的赋值就是“贴标签”,第一段代码中x=2就是将x的标签贴到了别的地方,并非修改值。

  • python3和python2区别
    1、输出: python3是print(xxx), python2是print xxx
    2、输入:
    其他地方都差不多

Post Date: 2018-03-18

版权声明: 本文为原创文章,转载请注明出处