Python(1-8天总结)
day1:
变量:把程序运行过程中产生的中间值。暂时存储起来。方便后面的程序调用.
变量命名规范:
常量:所有字母大写
注释:
数据类型:
1. int 整数
2. str 字符串. 不会用字符串保存大量的数据 ,字符串由',"", ''', """组成
3. bool 布尔值. True, False 所有的空都是False。 非空都是True
4. list 列表(重点) 存放大量的数据
5. dict 字典 key: value 查找会比较快
6. set 集合 无序 不能重复
7. bytes 一堆字节。 我们程序处理的最小单位
8. tuple 元组 不可变的列表 输入:input()
循环:if elif else day2:
循环:while break终止 continue停止当前本次循环。 继续执行下一次循环
格式化输出:%s
运算符:优先级: ()-> not -> and -> or
1 and 2 取2
1 or 2 取 1
0 and 2
0 and 1
字符串编码
1. ASCII 8bit 1byte
2. GBK 16bit 2byte
3. Unicode 32bit 4byte
4. UTF-8 可变长度的unicode
英文: 8bit 1byte
欧洲文字; 16bit 2byte
中文 :24bit 3byte
判断:in / not in day3:
1.索引
字符串中每个字符的位置顺序
索引从0开始. 程序员数数从0开始
s[索引] 获取到字符串s中的索引位置的数据
s[:] 从头到尾
s[-1] 反向索引
s[3:1:-1]) 从右往左切片
s[start: end] 从start切到end。 但是不包含end. 顾头不顾尾
s[start: end: step] step步长。 每隔xx个取1个。 默认是1 如果step是-1 从右往左取值 2.切片
s[start: end: step]
从start开始到end结束。 但是取不到end. 每step个取一个 3.字符串操作
1.upper() 全部转化成大写字母
2.strip() 去掉左右两段的空白(空格,\n, \t)
3.replace(old, new) 字符串替换
4.split() 切割. 得到的结果是一个列表.
5.startswith() 判断是否以xxx开头
6.find() 查找。如果找到了。 返回索引。如果找不到返回-1
7.len() 内置函数,求字符串长度
8.center()
9.count()计数
10.find()查找 没有返回-1
11.index()索引 没有报错
12.isalpha() 检测字符串是否只由字母组成
13.isdigit() 是否只有阿拉伯数字
14.isnumeric() 检测字符串是否只由数字组成。这种方法是只针对unicode对象
15.isalnum() 检测字符串是否由字母和数字组成。 4. 迭代
for 变量 in 可迭代对象:
循环体(break,continue)
要求掌握
# 把任意字符串中的每一个字符打印出来
# s = "胡辣汤好喝,疙瘩汤也好喝,所以再来一碗"
# index = 0
# while index < len(s): # 0 1 2...19
# print(s[index])
# index += 1 day4:
1、List:增删改查
1. 新增:
append(元素) 添加到末尾
insert(index, 元素) 把元素插入到对应索引的位置
extend(可迭代对象) 迭代添加
2.删除:
pop() 弹出最后一个 pop(1)弹出指定元素
pop(index) 弹出指定位置的元素
remove() 移除xxx元素
clear()清空列表
del[6:2:1] 索引和切片
3. 改: 根据索引修改.
4. 查询: for循环
for el in lst:
for i in range(len(lst)):
2. 列表的常用功能
1.count()
2.index()
3.sort() 排序
4.sort(reverse = True)倒序
5.reverse() 翻过来
3. 列表的嵌套
降维操作。 一层一层的找
4. 元组。相关操作
tuple: 只读列表。由() 组成。特点:不可变
如果只有一个元素。 末尾加逗号("sdd",)
不可变: 元素内部第一层元素的内存地址 day5:
字典中的key是不能重复的。 存储是依靠着key来计算的
字典是使用hash算法计算key的哈希值. 使用哈希值来存储数据 哈希算法得到的是一个唯一的数字(可能是正数, 可能是负数, 很大或者很小)
哈希算法是无序的 字典中的key必须是可哈希的, 不可变的就是可哈希的 不可变: 字符串, 元组, int, bool
可变的: list, dict, set
【增删改查】
1. 增加
dic[key] = value
setdefault(key, value)
给dict中的Value添加新值不覆盖>>>>>>>>>>>>>>? 2.删除
pop(key)
popitem() 随机删除
del dic[key]
clear()
3.修改
dic[key] = value
dic1.update(dict2)
dict修改key>>>>>>>>>>>>>>>>>>>>>>>>>>>
a = {"yuntian":"zero", "Alex":"Li"}
a["Yuntian"] = a.pop("yuntian")
print(a)
# a.update(Yuntian = a.pop("yuntian")) 4. 查询
dic[key] 可能会报错
dic.get(key)
dic.setdefault()
dic.values()显示所有values的值,像列表但不是列表
dic.items()所有键对值
字典的迭代:
for k, v in dic.items():
print(k, v)
for k in dic:
dic[k] # lst = [11,22,33,44,55,66,77,88,99]
# dic = {}
# for el in lst:
# if el > 66:
# dic.setdefault("key1", []).append(el)
# else:
# dic.setdefault("key2", []).append(el)
# print(dic) day6:
is 判断内存地址是否一致
== 判断内容是否一致
python2中用的是ascii
python3用的是unicode
字符串如果传输:
encode(编码) 结果是bytes类型
接受到bytes之后。 需要解码
decode(编码). 结果是字符串
s.encode("utf-8")
# 缓存: 为什么有缓存。 缓存有什么问题,数据安全.google(自己盖发电厂。)
# 数据是保存在硬盘上。 硬盘的读写速度是很慢的. 72mb/s
# 把数据存储在内存中进行缓存。 1g/s
# 加大数据吞吐量
# 分布式. 异地部署 day7:
1. join: 把列表中的数据进行拼接。 拼接成字符串,如果有数字类型,可以用str强制转换成字符
"_".join(lst)
2. 关于删除:
列表和字典在循环的时候都不能删除。
把要删除的内容保存在新列表中。 循环新列表。 删除老列表(字典)
# 把要删除的内容记录在一个新列表中
# new_lst = []
# for el in lst:
# new_lst.append(el)
# # 循环这个新列表. 删除原来的列表
# for el in new_lst: # 不会导致循环的列表的元素移动问题
# lst.remove(el) # 注意, 删除的是老列表 # lst = ["王大锤", "王有才", "张小白", "刘大哥"]
# # 删除掉姓王的
# new_lst = [] # 装要删除的内容
# for el in lst:
# if el.startswith("王"): # 判断字符串是否以xxx开头
# new_lst.append(el)
# # 执行删除
# for el in new_lst:
# lst.remove(el) 3. fromkeys
dict.fromkeys(iter, value)
把可迭代对象进行迭代。 和后面的value组合成键值对 返回新字典
坑1: 返回新字典。不会改变原来的字典 [看代码]
dic = {}
dic.fromkeys(xxx, xxx)
print(dic) # {}
坑2: 【看代码】
d = fromkeys(xxx.[])
字典中的所有的value都是同一个列表
4. set集合
特点:无序不重复。 内部元素必须可哈希
1. add() 添加
让列表变成元祖set(lst)
5. 深浅拷贝(画图理解)
1. = 赋值操作没有创建新的对象。 此时 两个变量指向的是同一个内存地址
2. copy() [:] 浅拷贝。 拷贝第一层内容
3. 深拷贝
import copy
copy.deepcopy() 深度拷贝。 把对象内部的所有内容都拷贝一份
作用: 快速创建对象 day8:
文件操作【重点来了】:
1. 文件操作 open() 文件句柄
open()打开一个文件, 获取的是文件句柄
read()
readline() 读取第一行
readlines() 一次性全都读取出来, 返回的是列表
write() for line in f: 遍历文件中的内容 路径的问题:
1. 绝对路径
从磁盘根目录寻找 windows下用的就是c,d,e,f, linux: \user\bin\xxxx
2. 相对路径
从当前程序运行的文件夹内寻找 ../ 表示上一层文件夹
n \t 转义字符。 有固定的含义的。 推荐用r
open(r"E:\哈哈\t\n\护士模特少妇.txt", mode="r", encoding="utf-8")
2. 文件操作的相关模式Mode
r: 只读
w: 只写
a: 追加
r+:
w+:
a+: 非文本文件
rb
wb
ab r+b
w+b
a+b 3. 相关操作
1. seek()移动光标(重点)
seek(0) 开头
seek(0,2) 移动到末尾
2. tell() 获取光标所在的位置
3. truncate(3) 截断文件从头截取到3
# seek(参数1, 参数2)
# 参数1表示的是偏移量,移动多少个单位
# 参数2表示从什么位置进行偏移
# 0: 开头
# 1: 当前位置
# 2: 末尾 # 把光标移动到文件的开头: seek(0)
# 把光标移动到末尾: seek(0, 2) 4. 文件修改
with open(xxx) as 句柄, \
open(xxxxx)as xxx
不用手动关闭文件句柄 文件修改的步骤
1. 从源文件中读取数据。
2. 写入到副本文件中
3. 删除源文件
4. 把副本重命名成源文件
import os
os.remove()
os.rename() <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<必须要掌握>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# 文件句柄是一个可迭代对象
# f = open("胡辣汤", mode="r", encoding="utf-8")
# for line in f: # 读取文件中的内容。 一行一行的读取。 每次读取的内容交给前面的变量
# print(line.strip())
1、文本文件的复制(04)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
f1 = open(r"c:\日记本.txt", mode="r", encoding="utf-8")
f2 = open(r"d:\日记本.txt", mode="w", encoding="utf-8")
for line in f1: # 从f1中读取数据
f2.write(line) # 写入到f2中
f1.close()
f2.close()
2、文本文件修改>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
import os # 导入os模块
import time # 时间模块
with open("唐诗", mode="r", encoding="utf-8") as f1,\
open("唐诗_副本", mode="w", encoding="utf-8") as f2:
for line in f1:
line = line.replace("善良", "sb")
f2.write(line)
time.sleep(5)
os.remove("唐诗") # 删除源文件
time.sleep(5)
os.rename("唐诗_副本", "唐诗") # 把副本改名成源文件
3、文本文件里列表变成字典>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'''
编号,名称,价格,数量,仓库,phone
1,榴莲,500,60000,1号仓库,10010
2,苹果,700,70000,2号仓库,10086
1,榴莲,500,60000,1号仓库,155
2,苹果,700,70000,2号仓库,166
'''
'''变成
[{'编号': '1', '名称': '榴莲', '价格': '500', '数量': '60000', '仓库': '1号仓库', 'phone': '10010'},
{'编号': '2', '名称': '苹果', '价格': '700', '数量': '70000', '仓库': '2号仓库', 'phone': '10086'},
{'编号': '1', '名称': '榴莲', '价格': '500', '数量': '60000', '仓库': '1号仓库', 'phone': '155'},
{'编号': '2', '名称': '苹果', '价格': '700', '数量': '70000', '仓库': '2号仓库', 'phone': '166'}]
'''
f = open("水果.data", mode="r", encoding="utf-8")
titles = f.readline().strip() # 读取第一行 id,name,price,num
t_list = titles.split(",") # 【id,name,price,num】
lst = []
for line in f: # "1,苹果,500,60000" {id:1,name:liulian, num:xx, price:xxx}
dic = {}
ll = line.strip().split(",")
for i in range(len(t_list)):
dic[t_list[i]] = ll[i]
lst.append(dic)
f.close()
print(lst)
Python(1-8天总结)的更多相关文章
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 使用Python保存屏幕截图(不使用PIL)
起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...
- Python编码记录
字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...
- Apache执行Python脚本
由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...
- python开发编译器
引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...
- 关于解决python线上问题的几种有效技术
工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...
随机推荐
- 查询SQL Server 版本信息
select SERVERPROPERTY('ProductVersion') as ProductionVersion, SERVERPROPERTY('ProductLevel')as Produ ...
- Oracle日常性能查看
判断回滚段竞争的SQL语句:(当Ratio大于2时存在回滚段竞争,需要增加更多的回滚段)select rn.name, rs.GETS, rs.WAITS, (rs.WAITS / rs.GETS) ...
- xtrabackup在线迁移mysql并搭建为主主同步
一.背景 工作中有需求数据库需要迁移,但是不能停服,不能锁库锁表影响业务的正常运行,所以使用XtraBackup 二.环境: 操作系统:CentOS Linux release 7.4.1708 (C ...
- 马云18年前制止偷井盖视频走红 2013-05-10 11:00:37 来源: 新快报(广州) 有0人参与 分享到 网易微博 新浪微博 腾讯空间 人人网 有道云笔记 在一次访谈中,即将卸任阿里巴巴CEO的马云自曝了他第一次上电视是在1995年。“我刚开始创
马云18年前制止偷井盖视频走红 2013-05-10 11:00:37 来源: 新快报(广州) 有0人参与 分享到 网易微博 新浪微博 腾讯空间 人人网 有道云笔记 在一次访谈中,即将卸任阿里巴巴 ...
- TFS--解决新创建的windows用户无法访问TFS的问题
今天入职新同事,帮忙配置TFS的账号碰到一个问题,TFS账号是映射取administrators组得 所以新建用户之后,无法马上引入TFS.查询原因是 Builtin组中没有该账号,以前也总是碰到新加 ...
- vbox安装 ubuntu server 后 安装增强包
用vbox安装虚拟机系统如果不装增强包, 有很多东西就有点不好用-用vbox安装ubuntu server时,点击菜单中的安装增强功能.因为ubuntu server版本没有ui,所以不能很方便滴找到 ...
- 手把手教你自定义attr
最近在学习的过程中遇到了自定义的attr和自定义的style.因此各种百度,各种博客的学习,算是有了一个系统的了解.在这里记录下自己的收获. 一.为什么要使用自定义attr以及本文定位 在androi ...
- UOJ #62. 【UR #5】怎样跑得更快
题目分析 显然不可能高斯消元. 考虑反演. \(b_i=\sum\limits_{j=1}^n\gcd(i,j)^C\cdot \text{lcm}(i,j)^D\cdot x_j\) \(b_i=\ ...
- 可决系数R^2和MSE,MAE,SMSE
波士顿房价预测 首先这个问题非常好其实要完整的回答这个问题很有难度,我也没有找到一个完整叙述这个东西的资料,所以下面主要是结合我自己的理解和一些资料谈一下r^2,mean square error 和 ...
- 安装jdk1.7
1.压缩文件放到/usr文件夹里 2.解压到 /usr里,tar -zxvf jdk-7u71-linux-i586.tar.gz 3.配置jdk环境变量,打开/etc/profile配置文件,将下面 ...