本次学习内容  

  元组

  字典

  集合

  字符编码

  文件处理

一、元组

定义:与列表类似,定义是使用()

特性

1.可存放多个值

2.元组里的元素是不可变的

3.有序,下标从0开始从左往右的顺序访问

元组常用操作和列表一样

二、字典

定义:{}里key-value结构

key定义规则

1.不可变(数字,字符串,元组,*列表是不能作为key的,因为列表里的元素可变)

2.唯一,否则执行时会覆盖前面的value

  1. dic = {'age':21,'age':22}

value定义规则:任意数据类型

  1. dic1 = {
  2. 1:'alex',
  3. 'name':'hongpeng',
  4. (1,2,3):{'age':18}
  5.  
  6. }

字典的常用操作

  1. #创建,第一种最常用
  2. person = {"name": "alex", "age": 18}
  3. person = dict(name='alex', age=18)
  4. person = dict({"name": "alex", 'age': 18})
  5. person = dict((['name','alex'],['age',18]))
  6. #增
  7. dic = {'name':'alex','age':18}
  8. dic['gender'] = 'male'
  9. #改
  10. dic['age'] =20
  11. #删
  12. del dic['name']
  13. dic.pop('name')#
  14. #查
  15. print(dic.get('nameeeee'))#不会报错,返回None
  16. print(dic['name'])
  17. #快速创建字典
  18. data = dict.fromkeys([1,2,3],{"name":"alex","age":18})
  19. print(data)
  20. #输出{1: {'age': 18, 'name': 'alex'}, 2: {'age': 18, 'name': 'alex'}, 3: {'age': 18, 'name': 'alex'}}
  21. #用这种方法创建字典时有个坑,对应的value的值在内存中都是同一地址,也就是说如果只改1这个key对应的value,2,3对应的value也会改。
  22. data[1]["name"] = 'Alex'
  23. print(data)
  24. #打印字典的key和value
  25. 1
  26. for k,v in dic.items():字典转换列表,少用,占内存
  27. print(k,v)
  28. print(dic.keys())
  29. 2
  30. for i in dic.keys():
  31. print(i,dic[i])

字典的深浅copy

  1. #浅copy,只copy第一层
  2. dic = {'name':'hongpeng','age':21,'girlfriends':['mashengxi','wutenglan','xiaozemaliya']}
  3. dic2 = dic.copy()
  4. print(dic)
  5. print(dic2)
  6. dic['name'] = 'alex'
  7. dic['girlfriends'][2] = 'fandaoai'
  8. print(dic)
  9. print(dic2)
  10. #输出
  11. {'name': 'hongpeng', 'age': 21, 'girlfriends': ['mashengxi', 'wutenglan', 'xiaozemaliya']}
  12. {'name': 'hongpeng', 'age': 21, 'girlfriends': ['mashengxi', 'wutenglan', 'xiaozemaliya']}
  13. {'name': 'alex', 'age': 21, 'girlfriends': ['mashengxi', 'wutenglan', 'fandaoai']}
  14. {'name': 'hongpeng', 'age': 21, 'girlfriends': ['mashengxi', 'wutenglan', 'fandaoai']}
  15.  
  16. 应用:联合信用卡

  acc1 = {"name":"林海峰", "account":{"credit":3000, "balance":3000}}
  acc2 = acc1.copy()
  acc2["name"] ="杠娘"
  print(acc1)
  print(acc2)

  acc2["account"]["balance"] -= 680

  print(acc2)
  print(acc1)

  1. #深copy
  2. import copy
  3. acc = {'name':'alex','age':18,'information':['gender','male']}
  4. acc1 = copy.deepcopy(acc)
  5. acc2 = acc.copy()
  6. print(id(acc['information']))
  7. print(id(acc1['information']))
  8. print(id(acc2['information']))

三级菜单优化版本

知识点:

  • 字典
  • 列表
  • while循环
  • if...else流程控制
  1. menu = {
  2. '北京':{
  3. '海淀':{
  4. '五道口':{
  5. 'soho':{},
  6. '网易':{},
  7. 'google':{}
  8. },
  9. '中关村':{
  10. '爱奇艺':{},
  11. '汽车之家':{},
  12. 'youku':{},
  13. },
  14. '上地':{
  15. '百度':{},
  16. },
  17. },
  18. '昌平':{
  19. '沙河':{
  20. '老男孩':{},
  21. '北航':{},
  22. },
  23. '天通苑':{},
  24. '回龙观':{},
  25. },
  26. '朝阳':{},
  27. '东城':{},
  28. },
  29. '上海':{
  30. '闵行':{
  31. "人民广场":{
  32. '炸鸡店':{}
  33. }
  34. },
  35. '闸北':{
  36. '火车战':{
  37. '携程':{}
  38. }
  39. },
  40. '浦东':{},
  41. },
  42. '山东':{},
  43. }
  44. current_level = menu
  45. last_level = []
  46. while True:
  47. for key in current_level:
  48. print(key)
  49. choice = input(">>:").strip()
  50. if len(choice) == 0:continue
  51. if choice == 'b':
  52. if len(last_level) == 0:break
  53. #当前层改成父亲层,并删除last_level列表中的父亲层
  54. current_level = last_level[-1]
  55. last_level.pop()
  56. if choice not in current_level:continue
  57. #把当前层放入last_level列表中
  58. last_level.append(current_level)
  59. current_level = current_level[choice]

三、集合

定义:集合是一个无序的,不重复的数据组合

  1. 基本操作
  2. s = set([3,5,9,10]) #创建一个数值集合
  3.  
  4. t = set("Hello") #创建一个唯一字符的集合
  5.  
  6. a = t | s # t 和 s的并集
  7.  
  8. b = t & s # t 和 s的交集
  9.  
  10. c = t s # 求差集(项在t中,但不在s中)
  11.  
  12. d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
  13.  
  14. 基本操作:
  15.  
  16. t.add('x') # 添加一项
  17.  
  18. s.update([10,37,42]) # 在s中添加多项
  19.  
  20. 使用remove()可以删除一项:
  21.  
  22. t.remove('H')
  23.  
  24. len(s)
  25. set 的长度
  26.  
  27. x in s
  28. 测试 x 是否是 s 的成员
  29.  
  30. x not in s
  31. 测试 x 是否不是 s 的成员
  32.  
  33. s.issubset(t)
  34. s <= t
  35. 测试是否 s 中的每一个元素都在 t
  36.  
  37. s.issuperset(t)
  38. s >= t
  39. 测试是否 t 中的每一个元素都在 s
  40.  
  41. s.union(t)
  42. s | t
  43. 返回一个新的 set 包含 s t 中的每一个元素
  44.  
  45. s.intersection(t)
  46. s & t
  47. 返回一个新的 set 包含 s t 中的公共元素
  48.  
  49. s.difference(t)
  50. s - t
  51. 返回一个新的 set 包含 s 中有但是 t 中没有的元素
  52.  
  53. s.symmetric_difference(t)
  54. s ^ t
  55. 返回一个新的 set 包含 s t 中不重复的元素
  56.  
  57. s.copy()
  58. 返回 set s”的一个浅复制

四、字符编码

1.字符编码一种在内存,内存固定使用unicode编码,一种在硬盘,硬盘的编码(即可以修改的编码)

2.使用什么编码往硬盘存,就用什么编码去读

3.程序运行分两阶段:1.从硬盘读到内存2.python解释器运行已经读到内存的代码

encode:编码

decode:解码

五、文件处理

文件的几种打开模式

r:只读(文件必须存在,不存在报错)

w:只写(不存在创建,存在清空)

a:追加(可读,不存在创建,存在追加内容)

r+:读写

w+:写读,会把原文件覆盖

a+:追加

  1. #读
  2. f = open('test','r',encoding='utf-8')
  3. for line in f.readlines():#会一次性读到内存里
  4. print(line.strip())
  5. for line in f:#读一行写一行
  6. print(line.strip())
    #关闭
  7. f.close()
    with open('test','r',encoding='utf-8')as f#操作完不需要close文件
  8. f.write()
  9. f.flush()#操作完文件刷新,从内存到硬盘,不需要close文件
  10. f.seek()#寻找
    f.tell()#当前文件光标位置

Day3-python基础3的更多相关文章

  1. Day3 - Python基础3 函数、递归、内置函数

    Python之路,Day3 - Python基础3   本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...

  2. Python之路,Day3 - Python基础3

    一.文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  3. Day-3: Python基础

    数据类型和变量 Python中直接处理的数据类型主要有以下几种: 整数:Python可以直接处理任意大小的整数,无论正负,都可以直接输入处理: 浮点数:浮点数也叫做小数.有普通写法,如:1.1,也有描 ...

  4. Day3 Python基础学习——文件操作、函数

    一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...

  5. Day3 Python基础之while、for循环(二)

    1.数据运算 算数运算 整除运算:// 取余运算:% 指数运算:** 赋值运算 b+=a;等价于b=b+a 比较运算 >,<,==,!=,>=,<= 逻辑运算符 and .or ...

  6. Day3 - Python基础3 函数基本、递归函数、内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 2.2. 函数变量作用域 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1. 函数基本语法及 ...

  7. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  8. Python基础学习总结(持续更新)

    https://www.cnblogs.com/jin-xin/articles/7459977.html 嗯,学完一天,白天上班,眼睛要瞎了= = DAY1 1,计算机基础. CPU:相当于人的大脑 ...

  9. Python基础 小白[7天]入门笔记

    笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...

  10. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

随机推荐

  1. Linux 卸载mysql-libs包出现错误

    在Red Hat Enterprise Linux6.6上安装MySQL时,出现与package mysql-libs-5.1.73-3.el6_5.x86_64冲突的情况 [root@localho ...

  2. SQL SERVER修改排序规则——脚本篇

    在上篇MS SQL 排序规则总结中,大致就数据库服务器排序规则(或者叫数据库实例排序规则).数据库排序规则.列的排序规则粗浅的叙说了一遍,重点讲述了修改数据库服务器排序规则(数据库实例排序规则),其中 ...

  3. 使用TortoiseGit 来进行日常操作

    TortoiseSVN大家应该都很熟悉,相应的,git也有一个工具是TortoiseGit. 下载地址: http://download.tortoisegit.org/tgit/previews/ ...

  4. 还来一篇说下json_value 以及 json_query 的应用 (3)

    上一篇说了一下openjson 的一些使用方法,这次再说一下在2016里面的查询取值,当然就是 json_query 和 json_value 这2兄弟了 首先 ) = '{"a" ...

  5. Python写地铁的到站的原理简易版

    Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...

  6. MogileFS系统简单配置实例

    实验原理: MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached.Mo ...

  7. .NET 响应式自动缩略图服务器

    做互联网网站,总是会涉及到缩略图问题,之前一直是在上传图片时生成不同尺寸的缩略图,一直感觉又费力又不好管理,之后就写子 ThumbnailServer 用于部署一个图片服务器,在使用图片时才将图片转为 ...

  8. 使用Struts框架,实现用户登陆功能

    前言:本篇文章是本人这周学习的一个小结,在自我总结的同时,希望也能够给其他同学带来一点帮助.本文主要知识是参照书本上的知识点以及网上其他博客文章,在上机操练后的所得,具体源码主要来自http://bl ...

  9. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

  10. postman使用之一:安装启动篇

    官网介绍:http://www.getpostman.com/docs/ postman是干什么的就不介绍了,本文从postman的安装开始介绍,后续会有其它使用的介绍. 安装: 1.mac app安 ...