本次学习内容  

  元组

  字典

  集合

  字符编码

  文件处理

一、元组

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

特性

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的更多相关文章

  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. mysql: unknown variable 'character-set-client=utf8'

    在同事安装的MySQL服务器上(居然安装的是My-SQL 5.1.73的老旧版本),登录MySQL时遇到下面"mysql: unknown variable 'character-set-c ...

  2. 专用服务器模式&共享服务器模式

    连接ORACLE服务器一般有两种方式:专用服务器连接(dedicated server)和共享服务器连接(shared server).那么两者有啥区别和不同呢?下面我们将对这两者的区别与不同一一剖析 ...

  3. JAVA之直接内存(DirectMemory)

    Baisics: JAVA NIO使用,基于通道和缓冲区的IO方式,使用Native函数库直接分配堆外内存(allocateDirect),然后通过一个Java堆中的DirectByteBuffer对 ...

  4. BCP笔记整理(二)

    BCP的基础用法可以参考上一篇:http://www.cnblogs.com/Gin-23333/p/5489889.html 这篇是补充一些有可能会用到,但是出场几率并不算大的几个参数 1.首先是 ...

  5. linux下重启服务命令

    1.查找进程id命令 ps -ef | grep -v grep|grep bdse-tour-service-1.0-jar-with-dependencies.jar | awk '{print ...

  6. 【推荐】CentOS安装Tomcat-7.0.57+启动配置+安全配置+性能配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Tomcat之前,请确保已经安装了JDK-1.7环境,具体见<CentOS安装JDK-1.7>. ...

  7. Linux下java进程CPU占用率高分析方法

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  8. 003.安装nginx(lnmp)

    一.下载nginx 下载nginx源码包,解压: [root@huh ~]# cd /usr/local/src/ [root@huh src]# wget http://nginx.org/down ...

  9. ASP.NET 5 DNX SDK删除旧版本

    ASP.NET 5各种升级后旧版本的DNX不会删除,想删除旧版本的DNX,可以通过以下命令完成 首先打开CMD或者Powershell 1.先输入dnvm看看命令中是否有uninstall 2.如果没 ...

  10. android 学习中的一些问题记录 主要是概念问题

    一些问题记录 应用程序 res 目录常见的目录有哪些,分别放置什么类型的资源? animator/ 和anim/ 放的都是定义动画的XML文件,两个地方的动画类型不同. color/ XML文件:定义 ...