1. 保持纯真心态,精神饱满、持续,做人很傻很天真;工作总有不如意,敢于直面惨淡的人生。爱生活、爱家人、爱测试。

Python 环境搭建

  • 下载安装
  1. $ 下载页面:https://www.python.org/downloads/windows/
  2. 2.7https://www.python.org/downloads/release/python-2718/(选择:Windows x86-64 MSI installer)
  3. 3.8https://www.python.org/downloads/release/python-385/(选择:Windows x86-64 executable installer)
  4. 2.7 版本直连:https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi
  5. 3.7 版本直连:https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64.exe
  • pip 升级
  1. $ python2 -m pip install --upgrade pip --force-reinstall
  2. $ python3 -m pip install --upgrade pip --force-reinstall
  • 虚拟环境
  1. python3 的环境下创建
  2. $ 安装虚拟环境软件包:pip3 install virtualenv
  3. $ 创建虚拟环境: virtualenv Venv
  4. $ 虚拟环境管理器安装: pip3 install virtualenvwrapper-win
  5. $ 添加全局变量配置虚拟环境路径: WORKON_HOME / C:\Python\Virtualenv => 虚拟环境都创建在此目录下
  6. 创建虚拟环境: mkvirtualenv Venv(虚拟环境名称)
  7. 激活虚拟环境: workon Venv(虚拟环境名称)
  8. 退出虚拟环境: deactivate
  9. 删除虚拟环境: rmvirtualenv Venv(虚拟环境名称)
  10. 列出虚拟环境: workon / lsvirtualenv
  11. 创建虚拟环境指定 Python 版本: mkvirtualenv --python==C:\Python\Python37\python.exe 虚拟环境名称
  • 第三方包本地安装
  1. $ **.whl :
  2. $ pip install **.whl
  3. $ **.egg :
  4. $ 1. 先下载ez_setup.py,运行python ez_setup 进行easy_install工具的安装
  5. $ 2. easy_install **.egg
  6. $ **.zip / tar.gz
  7. python setup.py install

Python 标准数据类型

标准数据类型: Number(数字)、String(字符串)、Tuple(元组)、List(列表)、Dictionary(字典)、Set(集合)

不可变数据类型: Number(数字)、String(字符串)、Tuple(元组)

可变数据类型: List(列表)、Dictionary(字典)、Set(集合)

序列容器: String(字符串)、List(列表)Tuple(元组)

非序列容器:Dictionary(字典)、Set(集合)

[ 扩展:python 字面量 ]

  • 数值型
  • 字符型
  • 布尔型
  • 字面量集合: Tuple(元组)、List(列表)、Dictionary(字典)、Set(集合)
  • 特殊字面量:None

    数据类型之间的运算规则

  • 算术运算符

  1. 常见运算符:+ - * 、/ (/ python2 python3 中的作用不同)
  2. ** : 幂运算 2 ** 3 <==> 2 的三次方
  3. // : 取整运算
  4. % :取余运算
  5. / python 2.X 当除数与被除数都是整数时,取整数,当其中一个为浮点数时,结果为浮点数,在 3.x 则直接为浮点数
  • 赋值运算符
  1. 常见运算符:= 、+= 、-= 、*=、/= (A += B 相当于 A = A + B)
  2. //= : A //= B <==> A = A // B
  3. %= : A %= B <==> A = A % B
  4. **= : A **= B <==> A = A ** B
  • 比较运算符
  1. 常见运算符:>, < , >=, <=, ==, !=
  2. Python 没有 全等于 ===
  • 逻辑运算符
  1. # 逻辑运算符:逻辑与 and, 逻辑或 or, 逻辑非not (and,全真则真; or,全假为假)
  2. # and(且) ==> 非 0 为真, 0 为假
  3. ret = 0 and 2 # ==> 第一个条件为假,没有必要检查第二个条件 故 输出第一个条件 0
  4. ret = 1 and 0 # ==> 第一个条件为真,第二个条件必须执行 输出第二个条件 0
  5. ret = 1 and 2 # ==> 第一个条件为真,第二个条件必须执行 输出第二个条件 2
  6. # or(或) ==> 一个为真则为真
  7. ret = 1 or 2 # 检查第一个条件,为真, 输出第一个条件 0
  8. ret = 0 or 1 # 第一个条件为假,第二个条件必须执行 输出第二个条件 1
  9. ret = 0 or 0 # 第一个条件为假,第二个条件必须执行 输出第二个条件 0
  • 数据类型之间运算规则
  1. 总结:
  2. 1. 数字和数字之间可以进行所有的运算
  3. 2. 字符串和字符串之间只能进行加法运算
  4. 3. 数字和字符串之间只能进行乘法运算

数据类型转换

前提:可以转换为目标类型

  • 转换为 Number 类型
  1. value = '666'
  2. int(value) # ==> 666
  • 转换为 String 类型
  1. value = 666
  2. str(value) ==> '666'
  • 转换为 float 类型
  1. value = 666 # ‘666’呢?
  2. float(value) ==> 666.00

数字(Number)

  • 整数(integer)
  • 小数 / 浮点数(float)

[ 常用的数字函数 ]

  1. abs(x) #返回数字的绝对值,如abs(-10) 返回 10
  2. math.fabs(x) #返回数字的绝对值,如math.fabs(-10) 返回10.0
  3. exp(x) #返回e的x次幂(e^x),如math.exp(1) 返回2.718281828459045
  4. math.log(x) #返回x的对数如math.log(math.e)返回1.0,math.log(100,10)返回2.0
  5. math.log10(x) #返回以10为基数的x的对数,如math.log10(100)返回 2.0
  6. math.modf(x) #返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
  7. pow(x) #返回x**y 运算后的值
  8. math.sqrt(x) #返回数字x的平方根
  9. round(x,[n]) #返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数
  10. math.sin(x) #返回的x弧度的正弦值

字符串(String)

  • 字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 “ )来创建字符串
  • 字符串切片索引
  1. str = 'Runoob'
  2. print (str) # 输出字符串
  3. print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
  4. print (str[0]) # 输出字符串第一个字符
  5. print (str[2:5]) # 输出从第三个开始到第五个的字符
  6. print (str[2:]) # 输出从第三个开始的后的所有字符
  7. print (str * 2) # 输出字符串两次
  8. print (str + "TEST") # 连接字符串
  9. # 输出
  10. Runoob
  11. Runoo
  12. R
  13. noo
  14. noob
  15. RunoobRunoob
  16. RunoobTEST

[ python三引号 ]

python 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符

  1. para_str = """这是一个多行字符串的实例
  2. 多行字符串可以使用制表符
  3. TAB ( \t )。
  4. 也可以使用换行符 [ \n ]。
  5. """
  6. print (para_str)
  7. # 输出
  8. 这是一个多行字符串的实例
  9. 多行字符串可以使用制表符
  10. TAB ( )。
  11. 也可以使用换行符 [
  12. ]。

列表(List)

  • 列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现,列表的数据项不需要具有相同的类型
  • 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可
  • 列表切片索引

[ 常用的列表函数 ]

  1. list.append(obj) #在列表末尾添加新的对象
  2. list.count(obj) #统计某个元素在列表中出现的次数
  3. list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
  4. list.index(obj) #从列表中找出某个值第一个匹配项的索引位置
  5. list.pop([index=-1]) #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
  6. list.remove(obj) #移除列表中某个值的第一个匹配项
  7. list.reverse() #反向列表中元素
  8. list.sort( key=None, reverse=False) #对原列表进行排序,True 降序,False 升序(默认)
  9. list.clear() #清空列表
  10. list.copy() #复制列表

元组(Tuple)

  • 元组与列表类似,不同之处在于元组的元素不能修改

字典(Dictionary)

  • 字典是另一种可变容器模型,且可存储任意类型对象
  • dict = {key1 : value1, key2 : value2 }:每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
  • 注意:键必须是唯一的,但值则不必;值可以取任何数据类型(如字符串,数字或元组),但键必须是不可变的。

[ 访问字典的值 ]

  1. dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
  2. '''
  3. del dict['Name'] # 删除键 'Name'
  4. dict.clear() # 清空字典
  5. del dict # 删除字典
  6. '''
  7. print ("dict['Name']: ", dict['Name'])
  8. print ("dict['Age']: ", dict['Age'])
  9. # 输出
  10. dict['Name']: Runoob
  11. dict['Age']: 7

[ 字典键的特性 ]

  • 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
  1. dict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}
  2. print ("dict['Name']: ", dict['Name'])
  3. 123
  4. #输出
  5. dict['Name']: 小菜鸟
  6. 12
  • 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
  1. dict = {['Name']: 'Runoob', 'Age': 7}
  2. print ("dict['Name']: ", dict['Name'])
  3. 123
  4. #输出
  5. Traceback (most recent call last):
  6. File "test.py", line 3, in <module>
  7. dict = {['Name']: 'Runoob', 'Age': 7}
  8. TypeError: unhashable type: 'list'

[ 字典函数 ]

  1. radiansdict.clear() #删除字典内所有元素
  2. pop(key[,default]) #删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值

集合(Set)

  • 集合是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合
  • 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
  1. basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
  2. print(basket) # 去重功能
  3. #输出
  4. {'orange', 'banana', 'pear', 'apple'}
  5. 'orange' in basket # 快速判断元素是否在集合内
  6. #输出
  7. True
  8. 'crabgrass' in basket
  9. #输出
  10. False
  11. # 下面展示两个集合间的运算
  12. a = set('abracadabra')
  13. b = set('alacazam')
  14. print(a)
  15. #输出
  16. {'a', 'r', 'b', 'c', 'd'}
  17. print(a - b) # 集合a中包含而集合b中不包含的元素
  18. #输出
  19. {'d', 'b', 'r'}
  20. print(a | b) # 集合a或b中包含的所有元素
  21. #输出
  22. {'c', 'b', 'r', 'z', 'l', 'm', 'a', 'd'}
  23. print(a & b) # 集合a和b中都包含了的元素
  24. #输出
  25. {'a', 'c'}
  26. print(a ^ b) # 不同时包含于a和b的元素
  27. #输出
  28. {'l', 'b', 'z', 'r', 'm', 'd'}

[ 添加元素 ]

  • s.add( x ) 将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作
  1. thisset = set(("Google", "Runoob", "Taobao"))
  2. thisset.add("Facebook")
  3. print(thisset)
  4. #输出
  5. {'Taobao', 'Facebook', 'Google', 'Runoob'}
  • s.update( x ) 参数可以是列表,元组,字典等
  1. thisset = set(("Google", "Runoob", "Taobao"))
  2. thisset.update({1,3})
  3. print(thisset)
  4. #输出
  5. {1, 3, 'Google', 'Taobao', 'Runoob'}
  6. thisset.update([1,4],[5,6])
  7. print(thisset)
  8. #输出
  9. {1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}

[ 移除元素 ]

  1. s.remove( x ) # 将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误
  2. s.discard( x ) # 移除集合中的元素,如果元素不存在,不会发生错误
  3. s.pop() # 随机删除集合中的一个元素,在交互模式,pop 是删除集合的第一个元素(排序后的集合的第一个元素)

[ 集合函数 ]

  1. add() #为集合添加元素
  2. clear() #移除集合中的所有元素
  3. copy() #拷贝一个集合
  4. union() #返回两个集合的并集
  5. update() #给集合添加元素

Python 输入输出

标准输入输出函数

  • print() 标准输出函数
  1. # 换行符 \n, end='\n'
  2. print('aaa' end='') # 不换行
  3. print('bbb' end='#') # bbb 和 ccc 之间用 # 连接
  4. print('ccc')
  5. # 格式化输出
  6. name = '鲁班'
  7. age = 20
  8. > %s ==> string
  9. > %d ==> digit(数字)
  10. > %f ==> float
  11. > %% ==> 输出 %
  12. print('他的名字是' + name +',他的年龄是' + age + '。') # 输出格式
  13. print('他的名字是%s,他的年龄是%d。' %(name, age))
  14. print('胜率%d%%' % 87) # %% 表示 % ==> 87%
  • input() 标准输入函数,输入的内容是字符串
  1. print('请输入你的姓名:')
  2. input()
  3. <==> input('请输入你的姓名:')
  4. # 保存输入的数据
  5. input_content = input('请输入你的姓名:')
  6. print( input_content)
  7. # 动态
  8. print('欢迎您 %s !' % input_content)

Python 分支语句

if 分支语句

  • 比较运算符
  1. == 相等, != 不相等, > 大于, < 小于, >= 大于等于, <= 小于等于
  • if 语句
  1. if a > b :
  2. ret = a -b
  3. else:
  4. ret = a + b
  5. print(ret)
  • 多个条件之间的关系
  1. # and(且) ==> 非 0 为真, 0 为假
  2. ret = 0 and 2 # ==> 第一个条件为假,没有必要检查第二个条件 故 输出第一个条件 0
  3. ret = 1 and 0 # ==> 第一个条件为真,第二个条件必须执行 输出第二个条件 0
  4. ret = 1 and 2 # ==> 第一个条件为真,第二个条件必须执行 输出第二个条件 2
  5. # or(或) ==> 一个为真则为真
  6. ret = 1 or 2 # 检查第一个条件,为真, 输出第一个条件 0
  7. ret = 0 or 1 # 第一个条件为假,第二个条件必须执行 输出第二个条件 1
  8. ret = 0 or 0 # 第一个条件为假,第二个条件必须执行 输出第二个条件 0
  9. # 例 and 优先级 高于 or
  10. a = 10
  11. b = 20
  12. ret = a > b and a or b
  13. = false and a or b
  14. = false or b
  15. = b # ==> b 20
  16. ret = a < b and a or b
  17. = true and a or b
  18. = a or b
  19. = a # ==> a 10
  20. # not(非)

while 语句

  1. """
  2. 我不喜欢这个世界,我只喜欢你!
  3. """
  4. # while 循环
  5. # i = 1
  6. # while i <= 100:
  7. # print(i)
  8. # i += 1
  9. #
  10. # print('END')
  11. # 1-100 偶数
  12. # i = 1
  13. # while i <= 100:
  14. # # print(i)
  15. # # i += 2
  16. # if i % 2 == 0:
  17. # print(i)
  18. # i += 1
  19. # 1-100 累加和
  20. # start = 1
  21. # end = 100
  22. # total = 0
  23. # while start <= end:
  24. # total = total + start
  25. # start += 1
  26. # print(total)
  27. # start = int(input('开始数:'))
  28. # end = int(input('结束数:'))
  29. # total = 0
  30. # while start <= end:
  31. # total = total + start
  32. # start += 1
  33. # print(total)
  34. # 1-100 奇数和
  35. # start = 1
  36. # total = 0
  37. # while start <= 100:
  38. # if start % 2 != 0:
  39. # total = total + start
  40. # start += 1
  41. # print('奇数和:',total)
  42. # 打印 *
  43. # n = 1
  44. # while n <= 5:
  45. # print('*' * n)
  46. # n += 1
  47. # 1- 100 除 50 不累加
  48. # index = 1
  49. # total = 0
  50. # while index <= 100:
  51. # if index != 50:
  52. # total = total + index
  53. # index += 1
  54. # print(total)
  55. # index = 1
  56. # total = 0
  57. # while index <= 100:
  58. # if index == 50:
  59. # index += 1
  60. # continue # 跳过本次循环 不是退出循环
  61. # total = total + index
  62. # index += 1
  63. # print(total)
  64. # 大于 50 停止循环
  65. # i = 1
  66. # while i <= 100:
  67. # if i > 50:
  68. # break # 后边的代码不执行,并且终止循环
  69. # i += 1
  70. # print(i)
  71. # 简易版员工管理系统
  72. # 1 展示信息
  73. # 2 新增信息
  74. # 3 修改信息
  75. # 4 删除信息
  76. # 5 退出
  77. while True:
  78. print('欢迎使用')
  79. print('*' * 10 + '操作菜单' + '*' * 10)
  80. print('1. 展示信息')
  81. print('2. 新增信息')
  82. print('3. 修改信息')
  83. print('4. 删除信息')
  84. print('5. 退出')
  85. # 保存用户操作
  86. user_operation = int(input('请输入您的操作:'))
  87. if user_operation == 1:
  88. print('姓名\t年龄\t')
  89. print('鲁班\t20\t')
  90. print('吕布\t30\t')
  91. print('小乔\t18\t')
  92. elif user_operation == 2:
  93. name = input('请输入姓名:')
  94. age = input('请输入年龄:')
  95. print('%s 添加成功'% name)
  96. elif user_operation == 3:
  97. name = input('请输入修改姓名')
  98. print('%s 修改成功'% name)
  99. elif user_operation == 4:
  100. name = input('请输入修改姓名')
  101. print('%s 删除成功'% name)
  102. elif user_operation == 4:
  103. print('退出成功')
  104. break
  105. else:
  106. print('输入有误')
  107. print('*' * 27)

Python 函数操作

  1. # 定义函数:
  2. def 函数名():
  3. 一行或多行代码
  4. # def sum(a, b):
  5. # ret = a + b
  6. # return ret
  7. # result = sum(10, 20)
  8. # result = result + 100
  9. # print(result)
  10. # 两个数之间的所有数之和
  11. start = int(input('输入开始数字:'))
  12. end = int(input('输入结束数字:'))
  13. def sum(start, end):
  14. """这是我的函数文档"""
  15. if not isinstance(start, int):
  16. print('请输入整数')
  17. return None
  18. if not isinstance(end, int):
  19. print('请输入整数')
  20. return None
  21. if start > end:
  22. print('start 必须小于 end')
  23. return None
  24. total = 0
  25. whi le start <= end:
  26. total = total + start
  27. start += 1
  28. print(total)
  29. sum(start, end)
  30. # 输入运算符进行计算
  31. while True:
  32. Operator = input('请输入运算符')
  33. def Operation(left, right, Oper):
  34. a = left
  35. b = right
  36. if Oper == '+':
  37. result = a + b
  38. elif Oper == '-':
  39. result = a - b
  40. elif Oper == '*':
  41. result = a * b
  42. elif Oper == '/':
  43. result = a / b
  44. else:
  45. print('输入有误')
  46. result = None
  47. return result
  48. result = Operation(10, 20, Operator)
  49. print(result)

数据类型基础操作

字符串(String)

维度:方法的作用,参数,返回值,原数据是否改变

符串的遍历
  1. istr = 'hello'
  2. # 方法一
  3. i = 0
  4. while i < 5:
  5. print(istr[i])
  6. i += 1
  7. # 方法二
  8. for v in istr:
  9. print(v, end=' ')

字符串的替换
  • replace() [ str.replace(‘old’, ‘new’, 替换次数) ]
  1. strEmail = 'zxymaibox@yeah.net'
  2. newstr = strEmail.replace('y','#') # 将所有的 y 替换成 ‘#’
  3. newstr = strEmail.replace('y','#', 1) # 只替换第一次出现的 y

字符串查找
  • find()
  • 返回第一次出现的位置,如果没有则返回 -1
  1. strEmail = 'zxymaibox@yeah.net'
  2. # 找到 @ 的位置
  3. strEmail.find('@')

字符串的切片
  1. # 以 @ 获取前后内容
  2. strEmail = 'zxymaibox@yeah.net'
  3. possion = strEmail.find('@') # 10
  4. # *****************
  5. strEmail[起始 : 结束 : 步长]
  6. # 起始值不写表示从 0 开始
  7. print(strEmail[: 9])
  8. # 结束值不写表示到最后
  9. print(strEmail[10:])
  10. # 步长(第三个值表示步长)
  11. print(strEmail[0: 9: 1]) <==> print(strEmail[0 : 9]) # zxymaibox
  12. print(strEmail[0: 9: 2]) # zyabx
  13. print(strEmail[0: 9: 3]) # zmb
  14. # 起始 : 结束 : 步长 可以是负值
  15. print(strEmail[9: 1: -1] # xobiamyxz
  16. # 字符串的逆序
  17. print(strEmail[:: -1])
  18. # *****************
  19. # 切片语法左闭右开
  20. 方法一:
  21. username => print(strEmail[0: 9])
  22. # 获取字符串长度
  23. length = len(strEmail)
  24. houzhui => print(strEmail[10: length])
  25. 方法二:
  26. username = strEmail[:possion]
  27. houzhui = strEmail[possion + 1:]
  28. print(username, houzhui)

字符串拆分成列表
  • split()
  • 返回拆分后的列表
  1. # 以 @ 获取前后内容
  2. strEmail = 'zxymaibox@yeah.net'
  3. # 查询某一字符出现的次数
  4. strCount = strEmail.count('@')
  5. if strCount == 1:
  6. result = strEmail.split('@')
  7. print(result) # => ['zxymaibox', 'yeah.net']
  8. username = result[0]
  9. houzhui = result[1]

查询某一字符出现的次数
  • count()
  1. strEmail = 'zxymaibox@yeah.net'
  2. print(strEmail.count('@')) # => 1
  3. print(strEmail.count('y')) # => 2

判断字符串是否全为字母
  • isalpha() [str.isalpha()]
  • 返回布尔值

字符串去除两侧空格
  • strip()
  • 返回新的字符串

列表(List)

  1. list = [10, 20, 30, 40]
  2. # 列表支持切片语法,可以切成小列表
  3. list[:: -1]

列表的遍历
  1. list = [10, 20, 30, 40]
  2. # 方法一
  3. index = 0
  4. length = len(list)
  5. while index < length:
  6. print(list[index])
  7. index += 1
  8. # 方法二
  9. for val in list:
  10. print(val)

列表元素插入
  1. list = [10, 20, 30, 40]
  2. # 尾部插入
  3. list.append(30)
  4. # 指定位置插入
  5. list.insert(0, 200)

列表元素删除
  • pop() 位置删除,[ 无参数的时候,默认删除最后一个位置的元素 ]
  • remove() 值删除, [ 默认删除第一次出现的值 ]
  • clear() 清空列表,
  1. list = [10, 20, 30, 40, 20]
  2. # 位置删除 pop
  3. list.pop()
  4. list.pop(2)
  5. # 值删除
  6. list.remove(20)
  7. # 列表清空
  8. list.clear()

列表元素查找和修改
  • index(oldValue) [ 如果值存在返回位置,不存在会报错 ]
  • count(oldValue) [ 查找出现的次数,如果不为 0 ,再使用 index 方法 ]
  1. list = [10, 20, 30, 40]
  2. # if list.count(20) != 0:
  3. # indexC = list.index(20)
  4. # # 修改值
  5. # list[indexC] = 20
  6. # in 和 not in 判断值是否存在
  7. if 20 in list:
  8. indexC = list.index(20)
  9. # 修改值
  10. list[indexC] = 20

列表元素排序
  • sort() [默认从小到大, reverse= false ]
  • 参数: reverse=True 实现降序排列;
  • 逆序: reverse() [ 实现列表的逆序 ]
  1. # 创建一个包含 10 个随机数的列表
  2. import random
  3. list = []
  4. i = 0
  5. while i < 10:
  6. randomNum = random.randint(1, 100) # 1-100 的随机数
  7. list.append(randomNum)
  8. i += 1
  9. print(list)
  10. list.sort()

两个列表元素追加
  • extend()
  1. list1 = [1,2,3,4]
  2. list2 = [10,20,30,40]
  3. list1.extend(list2)
  4. print(list1) # [1,2,3,4,10,20,30,40]

元祖(Tuple)

可以理解为列表,但是他的元素不可修改

  • 元组一旦创建不可修改
  • 元组只有一个元素时,需要在尾部添加一个逗号
  • 元组比列表更节省空间
  • 元组是序列式容器支持索引、切片操作
  1. # 定义元组
  2. tuple = (10,20,30,40)
  3. # 只支持不能修改元素的方法
  4. # 查询元素
  5. - index
  6. - count
  7. # 遍历操作
  8. - while
  9. - for

字典(Dictionary)

  1. # 字典的定义,键是唯一的,值可以重复,不支持索引和切片
  2. dict = {
  3. 'name': 'serendipity',
  4. 'gender': '女'
  5. 'age' : '20',
  6. }

字典元素访问
  1. dict = {
  2. 'name': 'serendipity',
  3. 'gender': '女'
  4. 'age' : '20',
  5. }
  6. ## 获取值
  7. 1. print(dict['age']) # 20 , 不存在会报错
  8. 2. 使用 get 方法
  9. print(dict.get('age', '我是默认返回值')) # 20 , 不存在返回 None , 可以指定默认返回值
  10. ## 添加和修改元素(如果 key 存在就是修改元素,不存在则添加元素)
  11. dict['score'] = 99 # 添加元素
  12. dict['name'] = '时光静好' # 修改元素

字典元素删除
  1. person = {
  2. 'name': 'serendipity',
  3. 'gender': '女'
  4. 'age' : '20',
  5. }
  6. ## 删除元素(也适用于列表)
  7. del person['age']
  8. ## 清空字典
  9. person.clear()
  10. ## 删除整个字典
  11. del person

字典的遍历
  1. person = {
  2. 'name': 'serendipity',
  3. 'gender': '女'
  4. 'age' : '20',
  5. }
  6. for val in person:
  7. print(val) # name,gender,age 默认只能遍历键
  8. # ***********************
  9. # 遍历字典的键
  10. personKeyList = person.keys()
  11. print(personKeyList) # dict_keys 类型: dict_keys(['name', 'gender', 'age'])
  12. # 把 dict_keys 类型 转换 成列表类型
  13. print(list(personKeyList)) # ['name', 'gender', 'age']
  14. # 遍历字典的值
  15. personValList = person.values()
  16. print(personValList) # dict_values 类型: dict_values(['serendipity', '女', '20'])
  17. # 把 dict_values 类型 转换 成列表类型
  18. print(list(personValList)) # ['serendipity', '女', '20']
  19. # 键值对遍历
  20. personKeyValList = person.items()
  21. print(personKeyValList) # dict_items 类型: dict_items([('name': 'serendipity'),('gender': '女'), ('age' : '20')])
  22. # 把 dict_items 类型 转换 成列表类型
  23. print(list(personKeyValList)) # [('name': 'serendipity'),('gender': '女'), ('age' : '20')]
  24. keyValList = list(person.items())
  25. for value in keyValList:
  26. print(value)
  27. print('key:', value[0],'value:', value[1])
  28. i = 0
  29. while i < len(keyValList):
  30. print('key:', keyValList[i][0], 'value:', keyValList[i][1] )
  31. i += 1

集合(Set)

Python 文件操作

文件的打开和关闭

  • open(文件名, 访问模式) 打开文件 [ 参数: 文件名 , 访问模式]
    • 访问模式: r 以只读方式打开文件(默认)
    • 访问模式: w 打开文件只用于写入
    • 访问模式: a 打开文件用于追加,文件存在,新的内容写入已有内容之后,文件不存在,创建新文件进行写入
    • 访问模式: rb 以二进制格式打开文件用于只读,文件指针放在开头
    • 访问模式: wb 以二进制格式打开文件用于写入,文件存在,将其覆盖,文件不存在,创建新文件进行写入
    • 访问模式: wb 以二进制格式打开文件用于追加,文件存在,新的内容写入已有内容之后,文件不存在,创建新文件进行写入
  • close() 关闭文件

pyCharm 文件编码: file encodings: GBK

  1. # 写入文件
  2. fileA= open('test.md', 'w') # 参数 文件名, 访问模式
  3. content= "1. 时光静好,岁月安然 \n 一人之间,山水江湖"
  4. fileA.write(content)
  5. # 关闭文件
  6. fileA.close()
  7. # 读取文件
  8. fileB= open('test.md', 'r')
  9. content = fileB.read()
  10. print(content)
  11. fileB.close()

文件读写

  • write() 一次只可以写一行
  • writelines() 一次写入多行,以列表形式
  • read() 没有参数读取文件所有数据,指定参数(1,2,3… …)读取指定个数的数据
  • readline() 一次读取一行
  • readlines() 一次读取多行
  1. # 写入文件
  2. fileA= open('test.md', 'w') # 参数 文件名, 访问模式
  3. content= "1. 时光静好,岁月安然 \n 一人之间,山水江湖!"
  4. fileA.write(content)
  5. lines = ['时光静好,岁月安然.\n', '一人之间,山水江湖!\n']
  6. fileA.writelines(lines)
  7. # 关闭文件
  8. fileA.close()
  9. ## 读取文件
  10. fileB= open('test.md', 'r')
  11. """文件内容:
  12. 时光静好,岁月安然.
  13. 一人之间,山水江湖!
  14. """
  15. content = fileB.read()
  16. content1 = fileB.readline()
  17. content2 = fileB.readline()
  18. content4 = fileB.readlines()
  19. print(content) # 读取所有内容
  20. print(content1) # 时光静好,岁月安然.
  21. print(content2) # 一人之间,山水江湖!(因为第一行content1 已经读过,所以读取下一行内容)
  22. print(content4) # ['时光静好,岁月安然.\n', '一人之间,山水江湖!\n']
  23. # 按行读取
  24. for line in content4:
  25. if line[-1] == '\n':
  26. print(line[:-1])
  27. else:
  28. print(line)
  29. fileB.close()

文件拷贝

  1. # 获取要拷贝的文件名
  2. old_fileName = input('请输入您要拷贝的文件名:')
  3. # 读取拷贝文件内容
  4. new_fileName = old_fileName + 'bk'
  5. # 打开新的文件
  6. file_old = open(old_fileName, 'rb')
  7. file_new = open(new_fileName, 'wb')
  8. # 将老文件内容写入新文件
  9. old_fileContent = file_old.read()
  10. file_new.write(old_fileContent)
  11. # 关闭文件
  12. file_old.close()
  13. file_new.close()

文件和目录操作

  1. import os
  2. # 文件重命名
  3. os.rename('test.md', 'hello.txt')
  4. # 文件删除
  5. os.remove('test.md') # 路径问题:写绝对路径
  6. # 创建和删除目录
  7. os.mkdir('abc')
  8. os.rmdir('abc')
  9. # 获取目录的文件列表
  10. os.listdir('abc')
  11. # 获取和设置工作目录
  12. os.getCWD() # CWD 默认当前文件路径
  13. os.chdir('\Users\YII\Desktop\\') # 设置默认工作目录