zoukankan      html  css  js  c++  java
  • 1 Python基础

    1 下载及安装

    下面以windows为例

    • 下载:https://www.python.org/downloads/windows/
    • 安装:一路next
    • 环境变量:C:Python27;C:Python27Scripts;
    • 测试:python -v

    pycharm professional

    2 简单程序

     1 #代码1
     2 print 'Hello lizitest'
     3 #结果1
     4 #Hello lizitest
     5 
     6 #代码2
     7 print 'Hello 栗子测试'
     8 #结果报错
     9 #解决办法:文件头加入
    10 #!/usr/bin/env python  -- 告诉系统是python文件
    11 # coding=utf-8             -- 设置字符集
    View Code

     3 编码风格

    • 大小写敏感
    • 顶头开始写代码
    • 缩进:统一缩进,用Tab
    • 标识符:包含数字、字母、下划线;只能字母、下划线开头
    • 常量:全部大写

    4 注释

    • 单行注释:#
    • 多行注释:'''

    5 数据类型

    不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象。

    对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象。

    可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象。

    变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,

    即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

    查看内存地址函数:id()

    查看数据类型函数:type()

    5.1 不可变类型

    内存地址变化,且不过不再使用的内存会被垃圾回收器回收

     1 #不可变类型:整型int、浮点型float、字符串型string、元组tuple
     2 #以int为例做实验
     3 
     4 age = 10
     5 money = 10
     6 tmp = age
     7 
     8 print id(age)
     9 print id(money)
    10 print id(tmp)
    11 
    12 age = 18
    13 print id(age)
    14 
    15 #结果
    16 32471152
    17 32471152
    18 32471152
    19 
    20 31684528
    View Code

     5.2 可变类型

    地址是不变的,只是地址中的内容变化了且地址得到了扩充

     1 #可变数据类型:列表list和字典dict
     2 #以list为例
     3 
     4 a = ['关羽' , '张飞' , '赵云']
     5 print id(a)
     6 a.append('马超')
     7 print id(a)
     8 a += ['黄忠']
     9 print id(a)
    10 
    11 print '%s' % str(a).decode('string_escape')
    12 
    13 #结果
    14 36964552
    15 36964552
    16 36964552
    17 ['关羽', '张飞', '赵云', '马超', '黄忠']
    View Code

     5.3 类型转换

    5.4 元组

    元组不可以修改,一般当作常量来使用。但元组可以进行连接和删除

     1 #定义元组
     2 a = (('刘备' , '孙尚香') , '关羽' , '张飞')
     3 print a[0][1]
     4 print '%s' % str(a[0]).decode('string_escape')
     5 print '%s' % str(a).decode('string_escape')
     6 print id(a)
     7 
     8 #结果
     9 孙尚香
    10 ('刘备', '孙尚香')
    11 (('刘备', '孙尚香'), '关羽', '张飞')
    12 31867384
    13 
    14 #组合元组,运算后会生成一个新的元组
    15 b = ('诸葛亮' ,)
    16 c = a + b
    17 print '%s' % str(c).decode('string_escape')
    18 print id(c)
    19 
    20 #结果
    21 (('刘备', '孙尚香'), '关羽', '张飞', '诸葛亮')
    22 35576952
    23 
    24 #元组内置函数
    25 tmp1 = ('10' , '20' , '30')
    26 tmp2 = ('10' , '200' , '30')
    27 list = ['刘备' , '关羽' , '张飞']
    28 print cmp(tmp1, tmp2)   #比较两个元组元素。
    29 print len(tmp1)      #计算元组元素个数。
    30 print max(tmp1)      #返回元组中元素最大值。
    31 print min(tmp1)      #返回元组中元素最小值。
    32 print '%s' % str(tuple(list)).decode('string_escape')  #将列表转换为元组。
    33 
    34 #结果
    35 -1
    36 3
    37 30
    38 10
    39 ('刘备', '关羽', '张飞')
    40 
    41 #删除元组
    42 del c
    View Code

    5.5 列表

     列表是一组有序项目的集合,它可变的数据类型,可以进行增删改查

     1 #列表
     2 a = ['start' , 'Python' , 'Java' , 'PHP']
     3 
     4 a.append('VBS' )  #
     5 print a
     6 del a[0]          #
     7 print a
     8 a[3] = 'C++'      #
     9 print a
    10 print a[0]        #
    11 
    12 #结果
    13 ['start', 'Python', 'Java', 'PHP', 'VBS']
    14 ['Python', 'Java', 'PHP', 'VBS']
    15 ['Python', 'Java', 'PHP', 'C++']
    16 Python
    17 
    18 #列表内置函数
    19 tmp1 = ['10' , '20' , '30' , '40']
    20 tmp2 = ['10' , '200' , '30']
    21 myTuple = ('刘备' , '关羽' , '张飞')
    22 #cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
    23 print cmp(tmp1, tmp2)   #比较两个列表元素。
    24 print len(tmp1)         #计算列表元素个数。
    25 print max(tmp1)         #返回列表中元素最大值。
    26 print min(tmp1)         #返回列表中元素最小值。
    27 print '%s' % str(list(myTuple)).decode('string_escape')  #将元组转换为列表。
    28 
    29 #结果
    30 -1
    31 4
    32 40
    33 10
    34 ['刘备', '关羽', '张飞']
    35 
    36 #列表操作
    37 a = ['start' , 'Python' , 'Java' , 'PHP' , 'Python' , 'end']
    38 b = ['append1' , 'append2']
    39 print a.count('Python')     #统计某个元素在列表中出现的次数
    40 a.extend(b)                 #在列表末尾一次性追加另一个序列中的多个值
    41 print a
    42 print a.index('Java')       #从列表中找出某个值第一个匹配项的索引位置
    43 a.insert(1, 'I am coming')  #将对象插入列表
    44 print a
    45 a.pop(1)                    #移除列表中的一个元素(默认最后一个元素),且返回该元素的值
    46 print a
    47 a.remove('Python')          #移除列表中某个值的第一个匹配项
    48 print a
    49 a.reverse()                 #反向列表中元素
    50 print a 
    51 c = ['x' , 'a' , 'o' , 'n']
    52 c.sort()                    #对原列表进行排序,assic码进行排序
    53 print c
    54 
    55 #结果
    56 2
    57 ['start', 'I am coming', 'Python', 'Java', 'PHP', 'Python', 'end', 'append1', 'append2']
    58 ['start', 'Python', 'Java', 'PHP', 'Python', 'end', 'append1', 'append2']
    59 ['start', 'Java', 'PHP', 'Python', 'end', 'append1', 'append2']
    60 ['append2', 'append1', 'end', 'Python', 'PHP', 'Java', 'start']
    61 ['a', 'n', 'o', 'x']
    View Code

     5.6 字典

    字典是键值对的集合,它是无序的,通过键值来访问,键值必须唯一

     1 #字典
     2 fourKings = {'Jacky':20 , 'Andy':19 , 'Leon':18 , 'Aaron':16}
     3 fourKings['me'] = 50        #
     4 print fourKings
     5 fourKings.pop('me')         #
     6 print fourKings
     7 fourKings['Aaron'] = 48     #
     8 print fourKings
     9 print fourKings['Aaron']    #
    10 
    11 #结果
    12 {'me': 50, 'Aaron': 16, 'Andy': 19, 'Leon': 18, 'Jacky': 20}
    13 {'Aaron': 16, 'Andy': 19, 'Leon': 18, 'Jacky': 20}
    14 {'Aaron': 48, 'Andy': 19, 'Leon': 18, 'Jacky': 20}
    15 
    16 #字典内置函数
    17 fourKings = {'Jacky':20 , 'Andy':19 , 'Leon':18 , 'Aaron':16}
    18 elseKings = {'tmp':22}
    19 print cmp(fourKings, elseKings)   #比较两个字典元素。
    20 print len(fourKings)        #计算字典元素个数,即键的总数。
    21 print str(fourKings)        #输出字典可打印的字符串表示。
    22 
    23 #结果
    24 4
    25 {'Aaron': 16, 'Andy': 19, 'Leon': 18, 'Jacky': 20}
    26 
    27 #字典操作
    28 fourKings = {'Jacky':20 , 'Andy':19 , 'Leon':18 , 'Aaron':16}
    29 print fourKings.copy()  #返回一个字典的浅复制,只复制第一层
    30 print fourKings.fromkeys(fourKings) #创建一个新字典,复制fourKings字典的键,val默认值为None
    31 print fourKings.fromkeys(fourKings , 10)    #默认值10
    32 print fourKings.get('Jacky')        #返回指定键的值
    33 print fourKings.get('me')           #没有指定键返回None
    34 if fourKings.get('me') == None:
    35     fourKings['me'] = 100
    36 print fourKings
    37 print fourKings.has_key('Jacky')    #键存在返回True
    38 print fourKings.has_key('you')      #键存在返回True
    39 print fourKings.items()             #以列表返回可遍历的(键, 值) 元组数组
    40 print fourKings.keys()              #以列表返回一个字典所有的键
    41 print fourKings.values()            #以列表返回字典中的所有值
    42 fourKings2 = {'Jacky2':20 , 'Andy2':19 , 'Leon2':18 , 'Aaron2':16}
    43 fourKings.update(fourKings2)        #把字典1的键/值对更新到字典2里
    44 print len(fourKings)
    45 fourKings.clear()                   #删除字典内所有元素
    46 print len(fourKings)
    47 
    48 #结果
    49 {'Aaron': 16, 'Andy': 19, 'Leon': 18, 'Jacky': 20}
    50 {'Aaron': None, 'Andy': None, 'Leon': None, 'Jacky': None}
    51 {'Aaron': 10, 'Andy': 10, 'Leon': 10, 'Jacky': 10}
    52 None
    53 {'me': 100, 'Aaron': 16, 'Andy': 19, 'Leon': 18, 'Jacky': 20}
    54 True
    55 False
    56 [('me', 100), ('Aaron', 16), ('Andy', 19), ('Leon', 18), ('Jacky', 20)]
    57 ['me', 'Aaron', 'Andy', 'Leon', 'Jacky']
    58 [100, 16, 19, 18, 20]
    59 0
    View Code

     5.7 集合

    集合是无序不重复的,因为无序所以没有索引

     1 #集合
     2 x = set('l')
     3 x.add('m')      #
     4 print x
     5 x.remove('l')   #
     6 print x
     7 x.update(['q' , 'w' , 'e' , 'r'])   #增加多项
     8 print x
     9 
    10 #结果
    11 set(['m', 'l'])
    12 set(['m'])
    13 set(['e', 'm', 'q', 'r', 'w'])
    14 
    15 #操作
    16 x = set(['l' , 'm' , 'n'])
    17 y = set (['n' , 'ok'])
    18 
    19 tmp = x&y   #交集
    20 print tmp
    21 tmp = x|y   #并集
    22 print tmp
    23 tmp = x-y   #差集
    24 print tmp
    25 tmp = x^y   #对称差集
    26 print tmp
    27 
    28 #结果
    29 set(['n'])
    30 set(['ok', 'm', 'l', 'n'])
    31 set(['m', 'l'])
    32 set(['m', 'ok', 'l'])
    33 
    34 #其他操作
    35 t = set('l')
    36 x = set(['l' , 'm' , 'n'])
    37 y = set (['n' , 'ok'])
    38 
    39 print len(x)            #长度
    40 print t.issubset(x)     #子集 t <= x 
    41 print t.issubset(y)     #子集
    42 print x.issuperset(t)   #父集 x >= t  
    43 
    44 #结果
    45 3
    46 True
    47 False
    48 True
    View Code

    6 分支

     1 #if
     2 str = 'time = 20170101'
     3 if 'time' in str:
     4     time0 = str.split('=')[1]           #分割
     5     time1 = str.split('=')[1].strip()   #过滤空格
     6     print time0
     7     print time1
     8 
     9 #结果
    10  20170101
    11 20170101
    12 
    13 #str.lstrip()    #去掉左边的空格
    14 #str.rstrip()    #去掉右边的空格
    15 #str.strip()     #去掉左右的空格
    16 
    17 #if...else
    18 name = 'Aaron'
    19 if name=='Aaron':
    20     print '老师'
    21 else:
    22     print '学生'
    23 
    24 #结果
    25 老师
    26 
    27 #if...elif
    28 score = 80
    29 if 100 >= score >=80:
    30     print '优秀'
    31 elif 80 > score >=60:
    32     print '及格'
    33 else:
    34     print '不及格'
    35 
    36 #结果
    37 优秀
    View Code

    7 循环

     1 #while
     2 count = 3
     3 while count > 0:
     4     print 'teacher Aaron' + str(count)
     5     count = count -1
     6 
     7 #结果
     8 teacher Aaron3
     9 teacher Aaron2
    10 teacher Aaron1
    11 
    12 #while ... break
    13 count = 3
    14 while count > 0:
    15     print 'teacher Aaron' + str(count)
    16     count = count -1
    17     if count == 1:
    18         break 
    19 
    20 #结果
    21 teacher Aaron3
    22 teacher Aaron2
    23 
    24 #for ... range
    25 for item in range(3):
    26     print item
    27 
    28 #结果
    29 0
    30 1
    31 2
    32 
    33 #for ... range
    34 list = ['Aaron' , 'Andy' , 'Jacky' , 'Leon']
    35 for i in range(len(list)):
    36     print list[i]
    37 
    38 #结果
    39 Aaron
    40 Andy
    41 Jacky
    42 Leon
    43 
    44 #range(start, stop, step) 默认step=1
    45 
    46 #for ... continue
    47 list = ['Aaron' , 'Andy' , 'Jacky' , 'Leon']
    48 for i in range(len(list)):
    49     if list[i] != 'Jacky':
    50         continue
    51     print list[i]
    52 
    53 #结果
    54 Jacky
    View Code

     8 函数

    函数是组织好的,可重复使用的代码段。

     1 #无参函数
     2 def getName():
     3     return 'Aaron !'
     4 
     5 print getName()
     6 
     7 #结果
     8 Aaron !
     9 
    10 #有参函数,必备参数
    11 def getAge(name):
    12     return name + ' 10 years old !'
    13 
    14 print getAge('Aaron')
    15 print getAge(name = 'Andy') #此种函数调用方式成为关键字函数
    16 
    17 #结果
    18 Aaron 10 years old !
    19 
    20 #有参函数,关键字参数,默认参数需要放在参数最后面
    21 def getStuInfo(name , age=18):
    22     return name + ' is ' + str(age) + ' years old !'
    23 print getStuInfo('Leon')
    24 
    25 #结果
    26 Leon is 18 years old !
    27 
    28 #有参函数,不定长参数1
    29 def printNames(*names):
    30     return names
    31     
    32 print printNames('Aaron' , 'Andy' , 'Jacky' , 'Leon')
    33 
    34 #结果
    35 ('Aaron', 'Andy', 'Jacky', 'Leon')
    36 
    37 #有参函数,不定长参数2
    38 def printNames(**params):
    39     return params
    40     
    41 print printNames(name = 'Aaron' , age = 10)
    42 
    43 #结果
    44 {'age': 10, 'name': 'Aaron'}
    45 
    46 #lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。
    47 #无参匿名函数
    48 tmp = lambda:'Hello'
    49 print tmp
    50 
    51 #有参匿名函数
    52 tmp = lambda x,y:x+y
    53 print tmp(1,2)
    View Code

    9 字符串

      1 #定义字符串
      2 str1 = 'Hello Aaron'
      3 str2 = 'I am Andy'
      4 
      5 #字符串长度
      6 print len(str1)
      7 #结果
      8 11
      9 
     10 #截取字符串-------------------------------------start
     11 print str1[0]       #截取第1位字符
     12 print str1[-1]      #截取倒数第1个字符
     13 #结果
     14 H
     15 n
     16 
     17 print str1[0:5]     #截取1-5位的字符
     18 print str1[-5:-1]   #截取倒数第5位与倒数第1位之前的字符
     19 #结果
     20 Hello
     21 Aaro
     22 
     23 print str1[6:]        #截取第6位-最后1位
     24 print str1[-3:]       #截取倒数第三位到结尾
     25 #结果
     26 Aaron
     27 ron
     28 
     29 print str1[:-3]       #截取从头开始到倒数第3个字符
     30 print str1[:3]        #截取从头开始到第3位的字符
     31 #结果
     32 Hello Aa
     33 Hel
     34 
     35 print str1[:]         #截取字符串的全部字符
     36 #结果
     37 Hello Aaron
     38 #截取字符串-------------------------------------end
     39 
     40 #查找-------------------------------------start
     41 print str2.find('A')    #没有substr则返回-1
     42 print str2.index('A')    #同find
     43 #结果
     44 5
     45 5
     46 
     47 print str2.rfind('A')   #返回S中最后出现的substr的第一个字母的标号,没有substr则返回-1
     48 print str2.rindex('A')
     49 
     50 print str1.count('o')   #subsstr出现的次数
     51 #结果
     52 2
     53 
     54 print str1.replace(' ' , '-')
     55 #结果
     56 Hello-Aaron
     57 
     58 print str1.strip()    #去掉左右空格
     59 print str1.lstrip()   #去掉左边空格
     60 print str1.rstrip()   #去掉右边空格
     61 print str1.strip('d')    #去掉左右d
     62 print str1.lstrip('d')   #去掉左边d
     63 print str1.rstrip('d')   #去掉右边d
     64 #查找-------------------------------------end
     65 
     66 #分割
     67 print str1.split(' ')    #把str分成一个list
     68 #结果
     69 ['Hello', 'Aaron']
     70 
     71 #大小写
     72 print str2.lower()   #小写 
     73 print str2.upper()   #大写 
     74 print str2.swapcase()   #大小写互换 
     75 print str2.capitalize()   #首字母大写 
     76 #结果
     77 i am andy
     78 I AM ANDY
     79 i AM aNDY
     80 I am andy
     81 
     82 #测试-------------------------------------start
     83 print str1.startswith('H') #是否以H开头 
     84 print str1.endswith('n')   #是否以n结尾 
     85 #结果
     86 True
     87 True
     88 
     89 print str1.islower() #S中的字母是否全是小写 
     90 print str1.isupper() #S中的字母是否便是大写 
     91 print str1.istitle() #S是否是首字母大写的
     92 #结果
     93 False
     94 False
     95 True
     96 
     97 print str1.isalnum()  #是否全是字母和数字,并至少有一个字符 
     98 print str1.isalpha()  #是否全是字母,并至少有一个字符 
     99 print str1.isdigit()  #是否全是数字,并至少有一个字符 
    100 print str1.isspace()  #是否全是空白字符,并至少有一个字符 
    View Code

     10 换行

  • 相关阅读:
    进程和线程
    分治算法
    MySQL-IN和Exists区别
    Java-悲观锁和乐观锁
    Spring如何解析Dubbo标签
    Java平台标准版本
    java常用的框架
    状态码
    算法
    java.c++.c#.c的区别
  • 原文地址:https://www.cnblogs.com/lizitest/p/6571422.html
Copyright © 2011-2022 走看看