[Python] Python 学习记录(2)
1.range(x,y)
[x,y)
>>> range(0,4) #0,1,2,3
>>> range(1,4) #1,2,3
2.dics
dics.get(key, default=None)
当key在dics中不存在时返回default的值,返回一个函数也是可以的
>>> dics = {
0 : 'a',
1 : 'b',
2 : 'c'
}
>>> dics.get(1, 'not found')
'b'
>>> dics.get(4, 'not found')
'not found'
- 判断key在dic中是否存在
两种方法
__contains__('key')
'key' in d.keys()
>>> d = {'name':'jack', 'sex':1, 'age':33}
>>> d
{'name': 'jack', 'sex': 1, 'age': 33}
>>> d.__contains__('name')
True
>>> 'name' in d.keys()
True
- foreach一个dic
j = {'key1' : 'value1', 'key2' : 'value2'}
for key, value in j.items(): # items()中每一项都是 tuple 类型,这里的key和value不是特定的关键字
print(key)
print(value)
# key1
# value1
# key2
# value2
单独循环key或者values
for k in j.keys():
print(k)
for v in j.values():
print(v)
3.读写文件
python中文件被分为两种,text or binary
- text
读到的字符串经过了编码
每一行都以EOL(End of Line)结尾
\n on Unix
\r\n on Windows
在写入的字符串中加入'\n'会自动换行
- binary
在mode后加上'b'
二进制方式读写文件
基本流程
open
write | read
close
with 相当于 using,自动close()
# mode r w a(append) r+(read and write)
with open('filepath','mode', encoding = 'utf-8') as file:
file.write('aaa')
file.read(size) # 读size个字符或byte
file.readline()
# from_what 0 (default)beginning of the file
# 1 current file position
# 2 end of file
file.seek(offset, from_what)
file.readlines()
写json
import json
with open('filepath', 'w', encoding = 'utf-8') as file:
data = json.dumps(u'data', ensure_ascii = False)
file.write(unicode(data))
python的json库只能序列化python的内置类型,如果是自定义的数据结构无法使用json.dumps序列化
可以使用jsonpickle
import jsonpickle
class Thing(object):
def __init__(self, name):
self.name = name
obj = Thing('Awesome')
jsn = jsonpickle.encode(obj) # 序列化,会带上类型信息用于反序列化
jsonpickle.decode(jsn) # 反序列化
jsn = jsonpickle.encode(obj, unpicklable=False) #序列化,不带类型信息
4. 判断某个class是否存在某个attribute
hasattr(class_a, 'attribute')
5. 判断某个变量是否是list
a = [1, 2, 3]
if isinstance(a, list):
print('a is a list')
6. list.append(),引用传递
在li.append(a)之后对a进行修改,li中的数据也会改变
此时的a与li[0]指向同一块内存
>>> import scrapy
>>>
>>> class A(scrapy.Item):
... post_id = scrapy.Field()
... author_id = scrapy.Field()
>>>
>>> a = A(post_id = "post_id_1", author_id = "author_id_1")
>>> li = []
>>> li.append(a)
>>> print(li)
[{'author_id': 'author_id_1', 'post_id': 'post_id_1'}]
>>> a['post_id'] = 'post_id_2'
>>> print(li)
[{'author_id': 'author_id_1', 'post_id': 'post_id_2'}]
Reference
[Python] Python 学习记录(2)的更多相关文章
- Python爬虫学习记录【内附代码、详细步骤】
引言: 昨天在网易云课堂自学了<Python网络爬虫实战>,视频链接 老师讲的很清晰,跟着实践一遍就能掌握爬虫基础了,强烈推荐! 另外,在网上看到一位学友整理的课程记录,非常详细,可以优先 ...
- python爬虫学习记录
爬虫基础 urllib,urllib2,re都是python自带的模块 urllib,urllib2区别是urllib2可以接受一个Request类的实例来设置url请求的headers,即可以模拟浏 ...
- 简明 Python 教程--学习记录
注意,我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符.这样做有点难看,不过确实简单有效. print # prints a blank line 注意,没有返回值 ...
- python numpy学习记录
numpy是一个python和矩阵相关的库,在机器学习中非常有用,记录下numpy的基本用法 numpy的数组类叫做ndarray也叫做数组,跟python标准库中的array.array不同,后者只 ...
- python多线程学习记录
1.多线程的创建 import threading t = t.theading.Thread(target, args--) t.SetDeamon(True)//设置为守护进程 t.start() ...
- Python tkinter 学习记录(一) --label 与 button
最简的形式 from tkinter import * root = Tk() # 创建一个Tk实例 root.wm_title("标题") # 修改标题 root.mainloo ...
- Python正则表达式学习记录
常用的命令: http://www.runoob.com/python/python-reg-expressions.html 使用中相关注意问题: 1. 中括号里的表示从N到M需要用横线‘-’, 而 ...
- 流畅的python第一章python数据模型学习记录
python中有些特殊的方法,以双上下划线开头,并以双下划线结束的方法.如__getitem__,这些方法是特殊的方法,供python解释权内部使用,一般来说不需要调用 还有一种是以双下划线开头的,如 ...
- python getopt学习记录
有时候我们需要写一些脚本处理一些任务,这时候往往需要提供一些命令行参数,根据不同参数进行不同的处理,在Python里,命令行的参数和C语言很类似(因为标准Python是用C语言实现的).在C语言里,m ...
- python基础学习记录......
1.IDEA写python 打开IDEA,File--->settings---->Plugins 输入python 安装 重启IDEA 2.新建Project 选择P ...
随机推荐
- cogs2823求组合数(lucas定理
http://cogs.pro:8080/cogs/problem/problem.php?pid=vNQJJVUVj 再写个数学水题,其实lucas适用于m,n比较大而p比较小的情况. 题意:给出两 ...
- codeforces 814 D. An overnight dance in discotheque (贪心+bfs)
题目链接:http://codeforces.com/contest/814/problem/D 题意:给出奇数个舞者,每个舞者都有中心坐标和行动半径,而且这些点组成的园要么相互包含要么没有交集求,讲 ...
- 中南林业科技大学第十一届程序设计大赛 有趣的二进制 牛客网 java大数的一些方法
链接:https://www.nowcoder.com/acm/contest/124/C来源:牛客网 题目描述 小新在学C语言的时候,邝老师告诉他double类型的数据在表示小数的时候,小数点后的有 ...
- yzoj2057 x 题解
题意:给出一个集合,要求把这个集合分成两部分,使得一个集合中的任一元素都与另一个集合的全部元素都两两互质 暴力 枚举每个元素O(n^2)再暴力判gcd=1,如果非1就放入不同集合内,用并查集维护联通块 ...
- Jmeter 逻辑控制器 之 事务控制器
前面我在做性能测试的时候,由于我们的系统是需要登录的,登录成功后,系统默认加载其订单数据,因此在用户看来这是一个操作.所以为了模拟这个操作,我需要访问两个接口,并且把这两个接口的响应时间算在一起,那么 ...
- 自荐RedisViewer有情怀的跨平台Redis可视化客户端工具
# **自荐一个有情怀的跨平台Redis可视化客户端工具——RedisViewer**[转载自 最美分享Coder 2019-09-17 06:31:00](https://www.toutiao.c ...
- Net基础篇_学习笔记_第十一天_面向对象(构造函数)
VS封装字段快捷键: 提取方法 Ctrl+R,M 封装字段 Ctrl+R,E 提取接口 Ctrl+R,I. 构成函数: public Student() { Con ...
- Dart语言概览
## Dart特性 Dart同时支持JIT(Just In Time,即时编译)和AOT(Ahead of Time,运行前编译)两种编译模式. **JIT** 在运行时即时编译,在开发周期中使用,可 ...
- CentOS7 小技巧总结
1.CentOS7 解决无法使用tab自动补全 原因:CentOS在最小化安装时,没有安装自动补全的包,需要手动安装. yum -y install bash-completion 安装好后,重新登陆 ...
- CODESYS添加target
1.主界面进入Tools 2.Install,选择安装包