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天总结)的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  6. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  7. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  8. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  9. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  10. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

随机推荐

  1. IIS Post 大小超出允许的限制

    IIS限制默认POST的长度是4096 Byte 在IIS——配置编辑器——system.web/httpRuntime的maxRequestLength 或者在web.config文件中的syste ...

  2. linux下查看某个文件属于哪个包

    1.centos/redhat下查看某个文件或命令属于哪个rpm包: $ yum provides /etc/passwd 或者 $ rpm -qf /etc/passwd 2.ubuntu及衍生版: ...

  3. Redis设计与实现读后感

    看了一下时间,现在是2018年8月22日14:28,看完最后一页内容之后,我简短的停留了一下,任思绪翻飞. redis设计与实现大概看了有12天左右,12天前,我的心里很乱,整个人都处于一种焦虑不安的 ...

  4. java virtualVM远程配置方法

    在/etc/hosts中设置主机名和ip的对应关系   ip为用java virtualVM链接服务器的ip 如:      10.175.0.191 host-ai #rmiregistry不知道干 ...

  5. Graph 133. Clone Graph in three ways(bfs, dfs, bfs(recursive))

    Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...

  6. 理解Underscore中的uniq函数

    uniq函数,是Underscore中的一个数组去重函数,给它传递一个数组,它将会返回该数组的去重副本. 1 ES6版本去重 在ES6版本中,引入了一个新的数据结构——set,这是一种类似数组的数据结 ...

  7. Kill占用指定端口的进程的方法

    (1)查询占用指定端口进程的PID 打开cmd命令行,输入netstat -ano|findstr 8080(指定端口号) 最后一列即为占用该端口的进程的PID (2)KILL指定PID的进程 紧接着 ...

  8. canvas的两个方法说明

    今天在用canvas的时候,发现有两个方法比较陌生,在此记录详细说明一下. (1)文本绘制的一个方法 canvas.drawTextOnPath(text, path, hOffset, vOffse ...

  9. 从零一起学Spring Boot之LayIM项目长成记(二) LayIM初体验

    前言 接上篇,已经完成了一个SpringBoot项目的基本搭建.那么现在就要考虑要做什么,怎么做的问题.所以本篇内容不多,带大家一起来简单了解一下要做的东西,之前有很多人不知道从哪里下手,那么今天我带 ...

  10. MongoDB的角色作用(2)

    数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而MongoDB主打的就是海量数据架构, ...