Day3-python基础3
本次学习内容
元组
字典
集合
字符编码
文件处理
一、元组
定义:与列表类似,定义是使用()
特性:
1.可存放多个值
2.元组里的元素是不可变的
3.有序,下标从0开始从左往右的顺序访问
元组常用操作和列表一样
二、字典
定义:{}里key-value结构
key定义规则:
1.不可变(数字,字符串,元组,*列表是不能作为key的,因为列表里的元素可变)
2.唯一,否则执行时会覆盖前面的value
- dic = {'age':21,'age':22}
value定义规则:任意数据类型
- dic1 = {
- 1:'alex',
- 'name':'hongpeng',
- (1,2,3):{'age':18}
- }
字典的常用操作
- #创建,第一种最常用
- person = {"name": "alex", "age": 18}
- person = dict(name='alex', age=18)
- person = dict({"name": "alex", 'age': 18})
- person = dict((['name','alex'],['age',18]))
- #增
- dic = {'name':'alex','age':18}
- dic['gender'] = 'male'
- #改
- dic['age'] =20
- #删
- del dic['name']
- dic.pop('name')#
- #查
- print(dic.get('nameeeee'))#不会报错,返回None
- print(dic['name'])
- #快速创建字典
- data = dict.fromkeys([1,2,3],{"name":"alex","age":18})
- print(data)
- #输出{1: {'age': 18, 'name': 'alex'}, 2: {'age': 18, 'name': 'alex'}, 3: {'age': 18, 'name': 'alex'}}
- #用这种方法创建字典时有个坑,对应的value的值在内存中都是同一地址,也就是说如果只改1这个key对应的value,2,3对应的value也会改。
- data[1]["name"] = 'Alex'
- print(data)
- #打印字典的key和value
- (1)
- for k,v in dic.items():字典转换列表,少用,占内存
- print(k,v)
- print(dic.keys())
- (2)
- for i in dic.keys():
- print(i,dic[i])
字典的深浅copy
- #浅copy,只copy第一层
- dic = {'name':'hongpeng','age':21,'girlfriends':['mashengxi','wutenglan','xiaozemaliya']}
- dic2 = dic.copy()
- print(dic)
- print(dic2)
- dic['name'] = 'alex'
- dic['girlfriends'][2] = 'fandaoai'
- print(dic)
- print(dic2)
- #输出
- {'name': 'hongpeng', 'age': 21, 'girlfriends': ['mashengxi', 'wutenglan', 'xiaozemaliya']}
- {'name': 'hongpeng', 'age': 21, 'girlfriends': ['mashengxi', 'wutenglan', 'xiaozemaliya']}
- {'name': 'alex', 'age': 21, 'girlfriends': ['mashengxi', 'wutenglan', 'fandaoai']}
- {'name': 'hongpeng', 'age': 21, 'girlfriends': ['mashengxi', 'wutenglan', 'fandaoai']}
- 应用:联合信用卡
acc1 = {"name":"林海峰", "account":{"credit":3000, "balance":3000}}
acc2 = acc1.copy()
acc2["name"] ="杠娘"
print(acc1)
print(acc2)
acc2["account"]["balance"] -= 680
print(acc2)
print(acc1)
- #深copy
- import copy
- acc = {'name':'alex','age':18,'information':['gender','male']}
- acc1 = copy.deepcopy(acc)
- acc2 = acc.copy()
- print(id(acc['information']))
- print(id(acc1['information']))
- print(id(acc2['information']))
三级菜单优化版本
知识点:
- 字典
- 列表
- while循环
- if...else流程控制
- menu = {
- '北京':{
- '海淀':{
- '五道口':{
- 'soho':{},
- '网易':{},
- 'google':{}
- },
- '中关村':{
- '爱奇艺':{},
- '汽车之家':{},
- 'youku':{},
- },
- '上地':{
- '百度':{},
- },
- },
- '昌平':{
- '沙河':{
- '老男孩':{},
- '北航':{},
- },
- '天通苑':{},
- '回龙观':{},
- },
- '朝阳':{},
- '东城':{},
- },
- '上海':{
- '闵行':{
- "人民广场":{
- '炸鸡店':{}
- }
- },
- '闸北':{
- '火车战':{
- '携程':{}
- }
- },
- '浦东':{},
- },
- '山东':{},
- }
- current_level = menu
- last_level = []
- while True:
- for key in current_level:
- print(key)
- choice = input(">>:").strip()
- if len(choice) == 0:continue
- if choice == 'b':
- if len(last_level) == 0:break
- #当前层改成父亲层,并删除last_level列表中的父亲层
- current_level = last_level[-1]
- last_level.pop()
- if choice not in current_level:continue
- #把当前层放入last_level列表中
- last_level.append(current_level)
- current_level = current_level[choice]
三、集合
定义:集合是一个无序的,不重复的数据组合
- 基本操作
- s = set([3,5,9,10]) #创建一个数值集合
- t = set("Hello") #创建一个唯一字符的集合
- a = t | s # t 和 s的并集
- b = t & s # t 和 s的交集
- c = t – s # 求差集(项在t中,但不在s中)
- d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
- 基本操作:
- t.add('x') # 添加一项
- s.update([10,37,42]) # 在s中添加多项
- 使用remove()可以删除一项:
- t.remove('H')
- len(s)
- set 的长度
- x in s
- 测试 x 是否是 s 的成员
- x not in s
- 测试 x 是否不是 s 的成员
- s.issubset(t)
- s <= t
- 测试是否 s 中的每一个元素都在 t 中
- s.issuperset(t)
- s >= t
- 测试是否 t 中的每一个元素都在 s 中
- s.union(t)
- s | t
- 返回一个新的 set 包含 s 和 t 中的每一个元素
- s.intersection(t)
- s & t
- 返回一个新的 set 包含 s 和 t 中的公共元素
- s.difference(t)
- s - t
- 返回一个新的 set 包含 s 中有但是 t 中没有的元素
- s.symmetric_difference(t)
- s ^ t
- 返回一个新的 set 包含 s 和 t 中不重复的元素
- s.copy()
- 返回 set “s”的一个浅复制
四、字符编码
1.字符编码一种在内存,内存固定使用unicode编码,一种在硬盘,硬盘的编码(即可以修改的编码)
2.使用什么编码往硬盘存,就用什么编码去读
3.程序运行分两阶段:1.从硬盘读到内存2.python解释器运行已经读到内存的代码
encode:编码
decode:解码
五、文件处理
文件的几种打开模式
r:只读(文件必须存在,不存在报错)
w:只写(不存在创建,存在清空)
a:追加(可读,不存在创建,存在追加内容)
r+:读写
w+:写读,会把原文件覆盖
a+:追加
- #读
- f = open('test','r',encoding='utf-8')
- for line in f.readlines():#会一次性读到内存里
- print(line.strip())
- for line in f:#读一行写一行
- print(line.strip())
#关闭- f.close()
with open('test','r',encoding='utf-8')as f#操作完不需要close文件- f.write()
- f.flush()#操作完文件刷新,从内存到硬盘,不需要close文件
- f.seek()#寻找
f.tell()#当前文件光标位置
Day3-python基础3的更多相关文章
- Day3 - Python基础3 函数、递归、内置函数
Python之路,Day3 - Python基础3 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...
- Python之路,Day3 - Python基础3
一.文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- Day-3: Python基础
数据类型和变量 Python中直接处理的数据类型主要有以下几种: 整数:Python可以直接处理任意大小的整数,无论正负,都可以直接输入处理: 浮点数:浮点数也叫做小数.有普通写法,如:1.1,也有描 ...
- Day3 Python基础学习——文件操作、函数
一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...
- Day3 Python基础之while、for循环(二)
1.数据运算 算数运算 整除运算:// 取余运算:% 指数运算:** 赋值运算 b+=a;等价于b=b+a 比较运算 >,<,==,!=,>=,<= 逻辑运算符 and .or ...
- Day3 - Python基础3 函数基本、递归函数、内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 2.2. 函数变量作用域 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1. 函数基本语法及 ...
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- Python基础学习总结(持续更新)
https://www.cnblogs.com/jin-xin/articles/7459977.html 嗯,学完一天,白天上班,眼睛要瞎了= = DAY1 1,计算机基础. CPU:相当于人的大脑 ...
- Python基础 小白[7天]入门笔记
笔记来源 Day-1 基础知识(注释.输入.输出.循环.数据类型.随机数) #-*- codeing = utf-8 -*- #@Time : 2020/7/11 11:38 #@Author : H ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
随机推荐
- Linux 卸载mysql-libs包出现错误
在Red Hat Enterprise Linux6.6上安装MySQL时,出现与package mysql-libs-5.1.73-3.el6_5.x86_64冲突的情况 [root@localho ...
- SQL SERVER修改排序规则——脚本篇
在上篇MS SQL 排序规则总结中,大致就数据库服务器排序规则(或者叫数据库实例排序规则).数据库排序规则.列的排序规则粗浅的叙说了一遍,重点讲述了修改数据库服务器排序规则(数据库实例排序规则),其中 ...
- 使用TortoiseGit 来进行日常操作
TortoiseSVN大家应该都很熟悉,相应的,git也有一个工具是TortoiseGit. 下载地址: http://download.tortoisegit.org/tgit/previews/ ...
- 还来一篇说下json_value 以及 json_query 的应用 (3)
上一篇说了一下openjson 的一些使用方法,这次再说一下在2016里面的查询取值,当然就是 json_query 和 json_value 这2兄弟了 首先 ) = '{"a" ...
- Python写地铁的到站的原理简易版
Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...
- MogileFS系统简单配置实例
实验原理: MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括 Memcached.Mo ...
- .NET 响应式自动缩略图服务器
做互联网网站,总是会涉及到缩略图问题,之前一直是在上传图片时生成不同尺寸的缩略图,一直感觉又费力又不好管理,之后就写子 ThumbnailServer 用于部署一个图片服务器,在使用图片时才将图片转为 ...
- 使用Struts框架,实现用户登陆功能
前言:本篇文章是本人这周学习的一个小结,在自我总结的同时,希望也能够给其他同学带来一点帮助.本文主要知识是参照书本上的知识点以及网上其他博客文章,在上机操练后的所得,具体源码主要来自http://bl ...
- 传输层协议TCP和UDP
本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...
- postman使用之一:安装启动篇
官网介绍:http://www.getpostman.com/docs/ postman是干什么的就不介绍了,本文从postman的安装开始介绍,后续会有其它使用的介绍. 安装: 1.mac app安 ...