Python基础笔记

计算机基础:

  Cpu(中央处理器):相当于人的大脑,用于计算。

  内存:储存数据,4\8\16\32G,成本高,断电即消失。

  硬盘:1T,固态(速度快)\机械硬盘,储存数据,长久保持的重要文件,小电影等等。

  操作系统:

  应用程序:

Python历史:

  宏观上:Python2与Python3的区别:

    1. Python2源码不标准,混乱,重复码太多,

    2. Python3统一标准,取出重复码。

Python的环境:

  编译型:一次性将所有程序编译成二进制文件。

            优点:运行速度快。

    缺点:开发效率低,不能跨平台。

    使用语言:c,c++等。

  解释型:当程序执行时,一行一行的解释。

          优点:开发效率高,可以跨平台。

          缺点:运行速度慢。

            使用语言:python,php等。

Python的种类:

  运行第一个py文件:

       Python3x:Python 文件路径 回车。

       Python2x:Python2 文件路径 回车。

       宏观区别:Python2x源码,重复率高,不规范,默认编码方式是ASCII码。

                 解决方式:在文件的首行输入:#-*- encoding:utf-8 -*-解决python2中文报错。

    Python3默认编码方式是utf-8。

-*- encoding:utf-8 -*-
print('我爱中国')

Python中的变量:

  定义:就是将一些运算的中间结果暂存到内存中,以便后续代码调用。

1 x=1+2+3+4
2 print(x)
3 print(x*5)
4 y=x*5
5 print(y+100-45+2)
6 
7 print('泰哥泰哥,我是小弟')
8 print('泰哥泰哥,我是三弟小妹')
View Code

  规范:1.必须由数字,字母,下划线任意组合,且不能数字开头。

          2.不能是python当中的关键字。

        [‘and’,’as’,’assert’,’break’,’class’,’continue’,’def’,’del’,’elif’,’else’,’except’,’exec’,’finally’,’for’,

        ’from’,’global’,’if’,’import’,’in’,’is’,’lambda’,’not’,’or’,’pass’,’print’,’raise’,’return’,’try’,’while’,’with’,’yield’]

     3.变量具有可描述性。

     4.不能是中文,对大小写敏感

     5.可以多变量赋值。eg:a = b = c = 1或者a,b,c = 1,2.3,"abc"

     6.可以使用del关键字删除对象。eg:del a

 1 s=1234
 2 12 #10r=3
 3 w*e=4
 4 #print=3
 5 
 6 t-t = 2
 7 3t_t = 23
 8 *r = 4
 9 _ = 'fdsa'
10 ___ = 4
11 %- = 'fdsa'
12 2w = 5
13 qwe-r = 'wer'
14 kfdsdlafhsdakfhdsakdfjkhsdakf = '太白'
15 print(名字)
16 AgeOfOldboy = 56
17 NumberOfStudents = 80
18 
19 #下划线
20 age_of_oldboy = 56
21 number_of_students = 80
View Code

Python中的常量:

  定义:一直不变的量,全部为大写字母。(BIR_OF_CHINA = 1949)

1 ge1 = 12 
2 age2 = age1
3 age3 = age2
4 age2 = 100
5 age3 = 5
6 print(age1,age2,age3) #12, 100 ,100
7                       #12,12,12,
8                       #12,100,12
9                       #100,100,100,
View Code

Python中的注释:

  方便自己,方便他人理解代码。

  单行注释:#

  多行注释:’’’被注释内容’’’/””” 被注释内容”””。

用户交互:input

    1.等待输入。

  2.将你输入的内容赋值给前面变量。

  3.Input出来的数据类型全部是str。

name = input('请输入你的名字:')
age = input('请输入你的年龄:')
print('我的名字是'+name,'我的年龄'+age+'')

函数:

  def 函数名(参数列表):

    函数体

 1 eg1:
 2 def hello(str):
 3     print("hello:%S"%(str))
 4 hello("Tom")
 5 
 6 eg2:
 7 def function01(a,b):
 8     return a + b
 9 print(function01(3,4))
10 
11 eg3:
12 def function02(a = 0,b = 0):
13     return a * b
14 print(function02())
15 print(function02(3))
16 print(function02(5,9))
View Code

  变量作用域:

    L(local)局部作用域

    E(Enclosing)闭包函数外的函数中

    G(Global)全局作用域

    B(Built-in)内建作用域

1 x = int(32)    #内建作用域
2 g_a = 0    #全局作用域
3 def function03():
4     0_3 = 1    #闭包函数外的函数中
5     def function04():
6         i_b = 3    #局部作用域
View Code

模块:

  模块是包含所有定义的函数和变量的文件,其后缀名是:.py

1 import sys
2 print(sys.path)

流程控制If循环:

 1 #第一种:
 2 if 4 > 5 :
 3     print('我请你喝酒')
 4 print('喝什么酒')
 5 
 6 #第二种:
 7 if 4 > 5:
 8     print('我请你喝酒')
 9 else:
10     print('喝什么酒')
11 
12 #多选:
13 num = input('请输入您猜的数字:')
14 if num == '1':
15     print('一起抽烟')
16 elif num == '2':
17     print('一起喝酒')
18 elif num == '3':
19     print('新开了一家,走看看')
20 else:
21     print('你猜错了.....')
22 
23 score = int(input("输入分数:"))
24 if score > 100:
25     print("我擦,最高分才100...")
26 elif score >= 90:
27     print("A")
28 elif score >= 60:
29     print("C")
30 elif score >= 80:
31     print("B")
32 elif score >= 40:
33     print("D")
34 else:
35     print("太笨了...E")
36 
37 name = input('请输入名字:')
38 age = input('请输入年龄:')
39 if name == '小二':
40     if age == '18':
41         print(666)
42     else:
43         print(333)
44 else:
45     print('错了....')
View Code

流程控制while循环:

  While 条件:

                  循环体

 1 print('111')
 2 while True:
 3     print('我们不一样')
 4     print('在人间')
 5     print('')
 6 print('222')
 7 
 8 #从1--100 
 9 count = 1
10 flag = True
11 #标志位
12 while flag:
13     print(count)
14     count = count + 1
15     if count > 100 :
16         flag = False
17 
18 count = 1
19 while count <= 100:
20     print(count)
21     count = count + 1
22 
23 count = 1
24 sum = 0
25 while count <= 100:
26     sum = sum + count 
27     count = count + 1
28 print(sum)
View Code 

     无限循环:

                  终止循环:1.改变条件,使其不成立。

                          2.break。

 1 #break
 2 print('11')
 3 while True:
 4     print('222')
 5     print(333)
 6     break
 7     print(444)
 8 print('abc')
 9 
10 count = 1
11 while True:
12     print(count)
13     count = count + 1
14     if count > 100:break
15 
16 print(111)
17 count = 1
18 while count < 20 :
19     print(count)
20     continue
21     count = count + 1
22 
23 count = 0
24 while count <= 100 : 
25     count += 1
26     if count > 5 and count < 95: 
27         continue 
28     print("loop ", count)
29 print("-----out of while loop ------")
View Code

  while else:

    当while循环被break打断,就不会执行else的结果。

 1 eg:1
 2 count = 0
 3 while count <= 5;
 4     count += 1
 5     if count == 3:break
 6     print("Loop",count)
 7 else:
 8     print("循环正常执行完啦")
 9 print("----out of while loop----")
10 
11 eg:2
12 count = 0
13 while count <= 5;
14     count += 1
15     if count == 3:pass
16     print("Loop",count)
17 else:
18     print("循环正常执行完啦")
19 print("----out of while loop----")
View Code

  continue:结束本次循环,继续下次循环。

for循环:

1 eg:1
2 s = 'fhdsklfds'
3 for i in s:
4 print(i)
5 
6 eg:2
7 s = 'fdsa苍井空fdsalk'
8 if '苍井空' in s:
9     print('您的评论有敏感词...')
View Code

格式化输出%:

  %占位符,s:字符串,d:digit 数字.

  %%只是单纯的显示%.

 1 #格式化输出:
 2 # % s d
 3 eg;1
 4 name = input('请输入姓名')
 5 age = input('请输入年龄')
 6 height = input('请输入身高')
 7 msg = "我叫%s,今年%s,身高%s" %(name,age,height)
 8 print(msg)
 9 
10 eg:2
11 name = input('请输入姓名')
12 age = input('请输入年龄')
13 job = input('请输入工作')
14 hobbie = input('请输入爱好')
15 
16 msg = '''----------info of %s-----------
17 Name   : %s
18 Age      : %d
19 Job       : %s
20 Hobbie : %s
21 -------------end--------------''' %(name,name,int (age),job,hobbie)
22 print(msg)
View Code
1 name = input('请输入名字')
2 age = input('请输入年龄')
3 height = input('请输入身高')
4 msg = "我叫%s,今年%s,身高%s,学习进度3%%" %(name,age,height)
5 print(msg)
6 (想要早格式化输出中单纯的%,就再加一个%)
View Code

编码:

  电脑的传输,还有储存的实际上都是0101010101

  美国:ASCII码,为解决全球化文字问题,创建了一个万国码:unicode。

   最开始:

    1个字节:表示所有的英文,特殊字符,数字等等。

    2个字节,16位表示一个中文,不够,unicode一个中文用4个字节表示,32位。

    eg:你   00000000 00000000 00000000 00000100

   升级版:utf-8,一个中文用3个字节表示。

   gbk国内使用,一个中文用2个字节。

  python2:

   ascii码:A:00000010 8位 一个字节

   unicode:A:00000000 00000001 00000010 00000100 32位 四个字节

         中:00000000 00000001 00000010 00000110 32位 四个字节

   utf-8:A:00100000 8位 一个字节

      中:00000001 00000010 00000110 24位 三个字节

   gbk:A:00000110 8位 一个字节

       中:00000010 00000110 16位 两个字节

   1.各个编码之间的二进制,是不能互相识别的,会产生乱码。

   2.文件的存储、传输,不能是unicode(只能是utf-8、utf-6、gbk、gb2312、ASCII码等)

  python3:   

   str 在内存中是用unicode编码。

    bytes类型

     对于英文:

      str:表现形式:s = 'alex'

         编码方式: 010101010 unicode

      bytes:表现形式:s = b'alex'

          编码方式: 000101010 utf-8 gbk。。。。

     对于中文:

      str:表现形式:s = '中国'

         编码方式: 010101010 unicode

      bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'

         编码方式: 000101010 utf-8 gbk。。。。

 1 eg:1
 2 s = 'alex'
 3 s1 = b'alex'
 4 print(s,type(s))
 5 print(s1,type(s1))
 6 eg:2
 7 s = '中国'
 8 print(s,type(s))
 9 s1 = b'中国'
10 print(s1,type(s1))
11 eg:3
12 s1 = 'alex'        #encode 编码,如何将str --> bytes, ()
13 s11 = s1.encode('utf-8')
14 s11 = s1.encode('gbk')
15 print(s11)
16 s2 = '中国'
17 s22 = s2.encode('utf-8')
18 s22 = s2.encode('gbk')
19 print(s22)
View Code

运算符:

  赋值运算符:=、+=、-=、*=、/=、%=、**=、//=

  逻辑运算符:&&、||、!

  位运算符:&、|、^、~、<<、>>

  成员运算符:in、not in

  身份运算符:is、is not

 1 #and or not
 2 #优先级,()> not > and > or
 3 # print(2 > 1 and 1 < 4)
 4 # print(2 > 1 and 1 < 4 or 2 < 3 and 9 > 6 or 2 < 4 and 3 < 2)
 5 
 6 # print(3>4 or 4<3 and 1==1)  # F
 7 # print(1 < 2 and 3 < 4 or 1>2)  # T
 8 # print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1)  # T
 9 # print(1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8)  # F
10 # print(1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6)  # F
11 # print(not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6) # F
12 
13 #ps  int  ----> bool   非零转换成bool True   0 转换成bool 是False
14 # print(bool(2))
15 # print(bool(-2))
16 # print(bool(0))
17 # #bool --->int
18 # print(int(True))   # 1
19 # print(int(False))  # 0
20 
21 '''x or y x True,则返回x'''
22 # print(1 or 2)  # 1
23 # print(3 or 2)  # 3
24 # print(0 or 2)  # 2
25 # print(0 or 100)  # 100
26 # print(2 or 100 or 3 or 4)  # 2
27 # print(0 or 4 and 3 or 2)  #3
28 
29 '''x and y x True,则返回y'''
30 # print(1 and 2)
31 # print(0 and 2)
32 print(2 or 1 < 3)  #2
33 print(2 or 1 < 3 and 2)  #2
34 print(3 > 1 or 2 and 2)  #True
35 print(1 > 2 and 3 or 4 and 3 < 2)  #False
View Code

数据类型分析:

  int:1,2,3用于计算。

  数字:int、float、bool、comlix(复数)

       +、-、*、/、**(幂次方)、%(取余)

      Ps:type( )函数用了查询变量所指类型

             字符串转化成数字:int(str) 条件:str必须是数字组成的。

             数字转化成字符串:str(int)

1 print(100,type(100))
2 print('100',type('100'))
1 i = 2
2 print(i.bit_length())
3 '''
4                           bit_length
5 1     0000 0001        1
6 2     0000 0010        2
7 3     0000 0011        2
8 '''
View Code

  bool:True,False,用户判断。

1 1 print(True,type(True))
2 2 print('True',type('True'))
 1 #bool  True False
 2 
 3 #int ----> str
 4 i = 1
 5 s = str(i)
 6 #str ---> int
 7 s = '123'
 8 i = int(s)
 9 
10 #int ---->bool:0为False,非0为True
11 i = 3
12 b = bool(i)
13 print(b)
14 #bool----> int
15 #True   1
16 #False  0
17 '''
18 ps:
19 while True:
20     pass
21 while 1: 效率高
22     pass
23 '''
24 
25 #str --->bool
26 #s = "" -----> False
27 #非空字符串都是True
28 #s = "0" -----> True
29 s
30 if s:
31      print('你输入的为空,请重新输入')
32 else:
33      pass
View Code

  str:存储少量数据,进行操作。

    'fasda','二哥','24321','张三,李四,王五,赵六,······'

  字符串:stràpython当中凡是使用引号引起的都是字符串,python中没有字符类型

    可相加:字符串的拼接。

    可相乘(与数字):str * int

    字符串中插入其它字符串。eg:print(str1[:3] + "123" + str1[3:])

      中括号用来截取字符串,下标从0开始

    字符串格式化。eg:print('ABCDEFG%d' %(12345))

      %d转义字符

 1 print(1)
 2 print("jsdfdsfsadl;fjdsal;j")
 3 print("I'm a teacher")
 4 
 5 a = '泰哥'
 6 b = '小二'
 7 c = a + b
 8 print(c)
 9 print('泰哥' + '小二' +'')
10 print('坚强'*8)
11 
12 msg = """
13 今天我想写首小诗,
14 歌颂我的同桌,
15 你看他那乌黑的短发,
16 好像一只炸毛鸡。
17 """
18 #print(msg)
View Code
  1 #字符串的索引与切片
  2 s = 'ABCDLSESRF'
  3 #索引
  4 #从前往后:
  5 s1 = s[0]
  6 print(s1)
  7 s2 = s[2]
  8 print(s2)
  9 #从后往前:
 10 s3 = s[-1]
 11 print(s3)
 12 s4 = s[-2]
 13 print(s4)
 14 #ABCD   切片 :顾头不顾尾
 15 s5 = s[0:4]
 16 print(s5)
 17 s6 = s[0:-1]
 18 print(s6)
 19 s7 = s[:]
 20 s8 = s[0:]
 21 print(s7,s8)  s7与s8相同
 22 s9 = s[0:0]
 23 #s[首:尾:步长]
 24 s10 = s[0:5:2]
 25 print(s10)
 26 s11 = s[4:0:-1]
 27 print(s11)
 28 s12 = s[3::-1]
 29 print(s12)
 30 s13 = s[3::-2]
 31 print(s13)
 32 s14 = s[-1::-1]
 33 print(s14)
 34 s15 = s[::-1]
 35 print(s15)
 36 
 37 #字符串的操作
 38 s = 'alexWUsir'
 39 s1 = s.capitalize()  # 首字母大写
 40 print(s1)
 41 # 全大写,全小写
 42 s2 = s.upper()
 43 s21 = s.lower()
 44 print(s2,s21)
 45 eg:
 46 s_str= 'acEQ1'
 47 you_input =input('请输入验证码,不区分大小写')
 48 if s_str.upper() == you_input.upper():
 49     print('输入成功')
 50 else:
 51     print('请重新输入')
 52 # 大小写翻转
 53 s3 = s.swapcase()
 54 print(s3)
 55 # 每个隔开(特殊字符或者数字)的单词首字母大写
 56 s = 'alex*egon-wusir'
 57 s4 = s.title()
 58 print(s4)
 59 s = 'fade,crazy*w4rri0r_songsong node_3'
 60 s4 = s.title()
 61 print(s4)
 62 #居中,空白填充
 63 s = 'alexWUsir'
 64 s5 = s.center(20,'~')
 65 print(s5)
 66 s = 'alex\tsir'
 67 s6 = s.expandtabs()
 68 print(s6)
 69 #公共方法
 70 s = 'alex二哥'
 71 l = len(s)
 72 print(l)
 73 #以什么开头结尾 endswith
 74 s = 'alexWUsir'
 75 s7 =s.startswith('alex')
 76 s71 = s.startswith('e',2,5)
 77 print(s71)
 78 '''
 79 if s7:
 80     pass
 81 elif s.startswith('bl'):
 82     pass
 83 print(s7)
 84 '''
 85 # find:通过元素找索引,找到返回下标值,找不到返回-1。
 86 # index:通过元素找索引,找到返回下标值,找不到报错。
 87 s = 'alexWUsir'
 88 s8 = s.find('A')
 89 s81 = s.index('A')
 90 print(s81,type(s8))
 91 #strip,rstrip,lstrip
 92 s = 'alexWUsir%'
 93 s9 = s.strip('%')
 94 print(s9)
 95 s = ' *a%lexWUsi* r%'
 96 s91 = s.strip(' %*')
 97 print(s91)
 98 # strip:默认删除前后空格
 99 username = input('请输入名字:').strip()
100 if username =='春哥':
101 print('恭喜春哥发财')
102 s = 'alexaa wusirl'
103 s10 = s.count('al')
104 print(s10)
105 # split   str ---->list
106 s = ';alex;wusir;taibai'
107 l = s.split('a')
108 print(l)
109 # format的三种玩法,格式化输出
110 s = '我叫{},今年{},爱好{},再说一下我叫{}'.format('太白',36,'girl','太白')
111 print(s)
112 name = input('请输入名字:')
113 s = '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format(name,36,'girl')
114 print(s)
115 name = input('请输入名字:')
116 s = '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(age=18,name=name,hobby='girl')
117 print(s)
118 # replace:替换
119 s = '来看待街坊邻居复合大师街坊法好的撒见客户'
120 s11 = s.replace('街坊','老王',1)
121 print(s11)
122 # is系列
123 name = 'jinxin123'
124 print(name.isalnum())   #字符串由字母或数字组成
125 print(name.isalpha())    #字符串只由字母组成
126 print(name.isdigit())      #字符串只由数字组成
View Code

  list:储存大量的数据。

    [1,2,3,'泰格','12353234',[1,2,3]]

  元祖:只读(只能看,不能修改)。

    (1,2,3,'第三方',)

  dict:字典{'name':'云姐','age':16}

      字典{'云姐':[],'二哥':[200,200,200,······]}

  集合:{1,2,3,435,'reter'}

列表list:

  列表相当于字符串,可存储不同数据类型,也可存储大量数据,且列表是有序的,有索引值,可切片,方便取值。

  增 append insert extend
  删 remove pop clear del
  改 li[索引] = '被修改的内容' li[切片]:'被修改的内容'
  查 for循环
    range

 1 eg:1
 2 li = ['alex',[1,2,3],'wusir','egon','女神','taibai']
 3 l1 = li[0]
 4 print(l1)
 5 l2 = li[1]
 6 print(l2)
 7 l3 = li[0:3]
 8 print(l3)
 9 
10 li = ['alex','wusir','egon','女神','taibai']
11 #增 append、insert
12 eg:2
13 li.append('日天')
14 li.append(1)
15 print(li)
16 eg:3
17 while 1:
18     username = input('>>>')
19     if username.strip().upper() == 'Q':
20         break
21     else:
22         li.append(username)
23 print(li)
24 eg:4
25 li.insert(4,'春哥')
26 print(li)
27 eg:5
28 li.extend('二哥')
29 li.extend([1,2,3])
30 print(li)
31 #
32 eg:6 # 按索引去删除
33 name = li.pop(1)  # 返回值
34 name = li.pop()  # 默认删除最后一个
35 print(name,li)
36 eg:7 # 按元素去删除
37 li.remove('taibai')
38 print(li)
39 eg:8 # 清空
40 li.clear()
41 print(li)
42 eg:9 # 删除整个表
43 del li
44 print(li) # 结果报错(无列表,没有定义,所以报错)
45 eg:10 # 按切片去删除
46 del li[0:2]
47 print(li)
48 #
49 eg:11
50 li[0] = '男兽'
51 li[0] = [1,2,3]
52 # 按切片去改
53 li[0:3] = '云姐plfdslkmgdfjglk' 
54 print(li)  # 结果分成最小元素
55 # 按索引去改
56 li[0:3] = [1,2,3,'春哥','咸鱼哥']
57 print(li)
58 #
59 eg:12
60 for i in li:
61     print(i) # 查表中的所有元素
62 print(li[0:2]) # 按切片查前两个元素
63 #公共方法:
64 eg:13
65 l = len(li)
66 print(l)
67 num = li.count('taibai')
68 print(num)
69 print(li.index('wusir'))
70 # 排序
71 li = [1,5,4,7,6,2,3]
72 eg:14
73 #正向排序
74 li.sort()
75 print(li)
76 #反向排序
77 li.sort(reverse=True)
78 print(li)
79 #反转
80 li.reverse()
81 print(li)
82 #列表的嵌套
83 li = ['taibai','武藤兰','苑昊',['alex','egon',89],23]
84 eg:15
85 print(li[1][1])
86 name = li[0].capitalize()
87 li[0] = name
88 li[0] = li[0].capitalize()
89 eg:16  将‘苑昊’改为‘苑ritian’
90 方法一:
91 li[2] = '苑日天'
92 print(li)
93 方法二:
94 print(li[2].replace('','ritian'))
95 li[2] = li[2].replace('','ritian')
96 eg:17 # 将alex改为大写
97 li[3][0] = li[3][0].upper()
98 print(li)
View Code

元祖tupe:

  只读列表,数据可以被查询,但不能被修改,字符串的切片操作同样适用于元祖。

  儿子不能更改,孙子可更改。 

  count()                           #元素出现次数
  len()           #长度
  li.index('元素')      #查找索引
  sort(reverse = True)  #倒叙排序
  li.sort()          #正序排序
  print(li.sort())
  reverse()反转
  ps:
    join: list ----->str
      S.join(iterable)
        li = [1,2,3]
        s1 = str(li)
    split str---->list

 1 tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon')
 2 eg:1
 3 #
 4 print(tu[3]) 
 5 print(tu[0:4]) # 切片查询
 6 for i in tu:
 7     print(i)
 8 eg:2 
 9 #将‘taibai’改为大写
10 tu[4][3]=tu[4][3].upper()
11 print(tu)
12 eg:3
13 #在列表中‘taibai’之后添加‘sb’
14 tu[4].append('sb')
15 print(tu)
16 eg:4
17 #join(可迭代对象)
18 s = 'alex'
19 s1 = '-'.join(s)
20 print(s1)
21 #列表转化成字符串  list -----> str    join
22 #字符串转化成列表  str ----->list     split()
23 li = ['taibai','alex','wusir','egon','女神',]
24 s = '++++'.join(li)
25 print(s)
26 eg:5
27 #range  [1,2,3,4,5,6,.......100........]
28   按数字排列的顺序列表
29 从3开始:
30 for i in range(3,10):
31     print(i)
32 从0开始:
33 for i in range(10):
34     print(i)
35 步长:
36 for i in range(0,10,3):
37     print(i)
38 for i in range(10,0,-2):
39     print(i)
40 for i in range(0,10,-1):   #结果不出,什么都没有,不会报错
41     print(i)
42 for i in range(10,-2):      #结果不出,什么都没有,不会报错
43     print(i)
44 for i in range(10,-1,-2):
45     print(i)
46 eg:6
47 li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'afds']
48 #循环打印列表:
49 for i in li:
50     if type(i) == list:
51         for k in i:
52             print(k)
53     else:print(i)
54 
55 for i in range(len(li)):
56     if type(li[i]) == list:
57         for j in li[i]:
58             print(j)
59     else:print(li[i])
View Code

字典dict:唯一一个映射类型

  数据类型划分:可变数据类型与不可变数据据类型

    可变数据类型(不可哈西):list,dict,set

    不可变数据类型(可哈西):元祖,bool值,int(数字),str(字符串)

  字典的key(键)必须是不可变数据类型,可哈西,

    value:任意数据类型。

  优点:使用二分查找去查询

     存储大量的关系型数据

  特点:无序的(3.5版本(包括3.5)前都是无序的)

 1 #字典建立
 2 dic = {
 3     'name':['大猛','小孟'],
 4     'py9':[{'num':71,'avg_age':18,},
 5            {'num': 71, 'avg_age': 18, },
 6            {'num': 71, 'avg_age': 18, },
 7            ],
 8     True:1,
 9     (1,2,3):'wuyiyi',
10     2:'二哥',
11 }
12 print(dic)
13 
14 dic1 = {'age': 18, 'name': 'jin', 'sex': 'male',}
15 #增:setdefault
16 eg:1
17 dic1['high'] = 185  #没有键值对,添加值
18 dic1['age'] = 16  #有键值对,则值覆盖
19 eg:2
20 setdefault   #有键值对,不做任何改变,没有才添加
21 dic1.setdefault('weight')  #无值时,默认为none
22 dic1.setdefault('weight',150)
23 dic1.setdefault('name','二哥')
24 print(dic1)
25 
26 #删:pop、popitem、del、clear
27 eg:3
28 print(dic1.pop('age'))   #有返回值,按键去删除
29 print(dic1.pop('二哥'))   #无键时报错
30 print(dic1.pop('二哥',None))   #可设置返回值
31 print(dic1.popitem())  #随机删除,有返回值:元组里面是删除的键值。
32 del dic1['name']   #删除键值
33 print(dic1)
34 del dic1   #删除字典,结果报错,原因:字典被删除
35 print(dic1)
36 dic1.clear() #清空字典
37 
38 #改:update
39 eg:4
40 dic1['age'] = 16   #键值覆盖
41 dic = {"name":"jin","age":18,"sex":"male"}
42 dic2 = {"name":"alex","weight":75}
43 dic2.update(dic)  #将dic所有键值对更新到dic2中(更新覆盖)
44 print(dic)
45 print(dic2)
46 
47 #
48 eg:5
49 print(dic1.keys(),type(dic1.keys()))   #结果内容:键
50 print(dic1.values())   #结果内容:值
51 print(dic1.items())   #结果内容:元祖(键,值),并不是键值对
52 for i in dic1:   #设置变量i时,什么都不写,默认打印结果为键
53     print(i)
54 for i in dic1.keys():    #打印键
55     print(i)
56 for i in dic1.values():    #打印值
57     print(i)
58 for i in dic1.items():    #打印键值对
59     print(i)
60 
61 eg:6
62 1)分别赋值:
63 a,b = 1,2
64 print(a,b)
65 2)使用一行代码转化a、b的值:
66 a = 1
67 b = 2
68 a,b = b,a
69 print(a,b)
70 3)最小单位一一对应,分别赋值:
71 a,b = [1,2],[2,3]
72 a,b = (1,2)
73 print(a,b)
74 for k,v in dic1.items():
75     print(k,v)
76 
77 eg:7
78 v1 = dic1['name']
79 print(v1)
80 v2 = dic1['name1']    #无值时报错
81 print(v2)
82 print(dic1.get('name1'))    #无值时返回none
83 print(dic1.get('name1','没有这个键'))    #返回自定义的值
View Code

字典dict嵌套:

 1 #字典建立
 2 dic = {
 3     'name':['alex','wusir','taibai'],
 4     'py9':{
 5         'time':'1213',
 6         'learn_money':19800,
 7         'addr':'CBD',
 8            },
 9     'age':21
10 }
11 dic['age'] = 56    #age改为56
12 print(dic['name'])
13 dic['name'].append('ritian')    #列表中添加人名‘ritian’
14 print(dic)
15 dic['name'][1] = dic['name'][1].upper()    #将‘wusir’全部变为大写
16 print(dic)
17 female : 6    #给py9添加一个键值对:female : 6
18 dic['py9']['female'] = 6
19 print(dic)
20 
21 # fhdklah123rfdj12fdjsl3    '123、12、13'
22     使用debugger运行处理:
23 info = input('>>>').strip()
24 for i in info:
25     if i.isalpha():
26         info = info.replace(i," ")
27 l = info.split()
28 print(len(l))
View Code

 小知识点汇总:

  1.python2与python3的区别:

   python2:

         print可加括号,也可不加括号;有range(),也有xrange()[生成器];用户输入:raw_input()

        python3:

    print必须加括号;只有range();input()

1 python2
2 print()  print 'abc'(可以加括号,也可不加)
3 range()   xrange() 生成器
4 raw_input()
5 
6 python3
7 print('abc')(必须加括号)
8 range()
9 input()
View Code

  2.=:赋值; ==:比较值是否相等; is:比较(比较的是内存地址)  id(内容)

1 eg:1
2 li1 = [1,2,3]
3 li2 = li1
4 print(li1 is li2)    #结果为TRUE
5 eg:2
6 li1 = [1,2,3]
7 li2 = li1
8 li3 = li2
9 print(id(li1),id(li2))    #结果相同
View Code

  3.数字,字符串:存在“小数据池”概念(为了节省空间)

   数字的范围 -5 -- 256

   字符串:1:不能有特殊字符

       2:s*20 还是同一个地址,s*21以后都是两个地址

eg:1
i1 = 6
i2 = 6
print(id(i1),id(i2))    #结果相同
eg:2
i1 = 300
i2 = 300
print(id(i1),id(i2))    #结果不同

  4.剩下的list、dict、tuple、set无“小数据池”概念

 1 eg:1
 2 l1 = [1,]
 3 l2 = [1,]
 4 print(l1 is l2)
 5 eg:2
 6 s = 'alex'
 7 s1 = b'alex'
 8 print(s,type(s))
 9 print(s1,type(s1))
10 eg:3
11 s = '中国'
12 print(s,type(s))
13 s1 = b'中国'
14 print(s1,type(s1))
View Code

集合及深浅copy:

  集合:可变数据类型,但里面的元素必须是不可变的数据类型(),集合是无序的,不重复。

     {}无键值对

set1 = set({1,2,3})
set2 = {1,2,3,[2,3],{'name':'alex'}}  # 错的
print(set1)
print(set2)
set1 = {'alex','wusir','ritian','egon','barry',}
增:add、update
eg:1
set1.add('女神')
print(set1)
eg:2
set1.update('abc')
print(set1)
删除:pop、remove、clear、del
eg:1
set1.pop()            # 随机删除
print(set1.pop())  # 有返回值
print(set1)
eg:2
set1.remove('alex')  # 按元素
print(set1)
eg:3
{}:空字典             set():空集合
set1.clear()
print(set1)
eg:4                       #删除整个集合
del set1
print(set1)
查:for i in
for i in set1:
    print(i)
交集:
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
set3 = set1 & set2
print(set3)                               # {4, 5}
print(set1.intersection(set2))  # {4, 5}
并集:
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2)           # {1, 2, 3, 4, 5, 6, 7,8}
print(set2.union(set1))  # {1, 2, 3, 4, 5, 6, 7}
反交集:
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2)                                  # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}
差集:set1独有的
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2)                  # {1, 2, 3}
print(set1.difference(set2))  # {1, 2, 3}
子集与超集:
set1 = {1,2,3,}
set2 = {1,2,3,4,5,6}
print(set1 < set2)
print(set1.issubset(set2))     #这两个相同,都是说明set1是set2子集。
print(set2 > set1)
print(set2.issuperset(set1))  #这两个相同,都是说明set2是set1超集。
去重:
li = [1,2,33,33,2,1,4,5,6,6]
set1 = set(li)
print(set1)
li = list(set1)
print(li)
s1 = {1,2,3}
print(s1,type(s1))
frozenset不可变集合,让集合变成不可变数据类型:
s = frozenset('barry')
print(s,type(s))
for i in s:
    print(i)
View Code

 

  

  

  

  

  

  

  

  

  

  

  

  

  

  

posted @ 2019-04-02 22:22  叫我耀耀  阅读(224)  评论(0编辑  收藏  举报