一. 杂谈
1.Python没有长整型,只有整型;
2.sys模块(用C写成)
sys.path 搜索模块的路径集合
sys.argv 打印相对路径,但在pycharm中存储的是绝对路径
3.os模块
os.system("dir") 直接输出的屏幕,不会进行传值
os.popen("dir").read() popen()将内容存储到内存的某地方,读出后便可以打印
os.mkdir("new_dir") 创建目录(熟悉linux的都懂)
4.一般标准库放在lib下,第三方库安装在site_packages中,当前目录中找不到模块,便会去site_packages中查找。
5.三元运算
result = value1 if conditions else value2
if conditions==True: result=value1
else conditions==False: result=value2
6.bytes
在python3.x中,文本总是unicode(str类型),而二进制数据则是bytes类型。并且,所有数据的传输皆为二进制,无论字符串还是视频。
问题来了:string和bytes怎么互相转化?
>>>(decode)>>>
string bytes
<<<(encode)<<<
>>> ‘?o?‘.encode(‘utf-8‘) b‘\xe2\x9d\xa4o\xe2\x9d\xa4‘ >>> b‘\xe2\x9d\xa4o\xe2\x9d\xa4‘.decode(‘utf-8‘) ‘?o?‘
(只是针对特殊字符哦?!)
二. 列表
1.关于切片,一定是 name[-3:-1] 而不是 name[-1:-3](从左向右数);
2.有关列表的一些方法:
names.insert(1, ‘S‘) | 将S插入到任意位置 | |
names.remove(‘S‘) | ||
del names[1] | python内置方法,可删除任意元素 | |
names.pop() | 输入索引,想删哪里删哪里 | |
names.index(‘S‘) | 查找元素的位置 | 典型用法——name.[name.index(‘S‘)] |
names.count(‘S‘) | 统计S的数量 | |
names.clear() | 清空列表 | |
names.reserve() | 永久性的修改列表的排列顺序 | |
names.sort() | 永久性的改变列表的排列顺序 |
按ACSII顺序排列(特殊字符>数字>大写>小写) 使用reserve=True便按照相反的顺序排列 |
names.sorted() | 暂时性的改变列表的排列顺序 | |
names.extend(names2) | 合并列表,并且names2依然存在 | |
names2=names.copy() |
浅copy(只copy了第一层,在嵌套第二层只相当于copy了内存地址) 改变names,names2不会发生改变 可用于创建联合账户等 |
|
names2=name[:] | ||
names2=copy.copy(names) | import copy | |
names2=list(names) | ||
names2=copy.deepcopy(names) | 深copy | import copy |
names2=names | 指向同一处内存 |
3.跳位读取names[0:-1:2] >>names[::]
4.元组,一旦创建就不能修改,只存在两个方法 count & index 。
三.字符串方法汇总
‘S‘.capitalize() | 首字母大写 | |
‘S‘.count(‘s‘) | S中的s的数量 | |
‘S‘.center(100,‘#‘) | 100个字符,将S居中,其余中#填充 | |
‘S‘.encode() | 字符串转为二进制 | |
‘S‘.endswith(‘s’) | 判断字符串S是否以s结尾 | |
‘S‘.expandtabs(tabsize=10) | 将tab键转换为多少tabsize的空格 | |
‘S‘.isalnum() | 检测是不是只包含阿拉伯数字以及英文 | |
‘S‘.isalpha() | 检测是不是只包含英文(大小写均可) | |
‘S‘.isdecimal() | 检测是否是十进制 | |
‘S‘.isdigit() | 判断是否是整数 | |
‘S‘.isidentifier() | 判断是否是一个合法的标识符 | |
‘S‘.islower() | 判断是否是小写 | |
‘S‘.isnumeric() | 判断是否只包括数字 | |
‘S‘.isspace() | 判断是否是空格 | |
‘S’.istitle() | 判断是否是标题格式 | |
‘S‘.isprintable() | 判断是否可打印(tty file,drive file文件不能被打印) | |
‘S‘.isupper() | 判断是否是大写 | |
‘S‘.join() | 合并列表为字符串 | print(‘‘.join([‘he‘,‘l‘,‘lo‘])) 输出:hello |
‘S‘.ljust(50, ‘@‘) | 字符串总长50,剩余的由@补充,从左边开始 | |
‘S‘.rjust(50,‘@‘) | 字符串总长50,剩余的由@补充,从右边开始 | |
‘S‘.lower() | 大写转换为小写 | |
‘S‘.lstrip() | 去掉左边的空格和回车 | |
‘S‘.rstrip() | 去掉右边的空格和回车 | |
‘S‘.strip() | 去掉两端的空格和回车 | |
str.maketrans() ‘S‘.translate() |
替换字符 |
vin = str.maketrans(‘abcdef‘, ‘123456‘)
|
‘S‘.replace(old, new, count) | 用新字符去替换旧字符,count决定替换的数量 | |
‘S‘.rfind(‘s’) | 返回s最右字符的下标 | |
‘S‘.find(‘s’) | 返回s最左字符的索引 | S.[S.find(s):] 切片 |
‘S‘.format() | 填充 | |
‘S‘.format_map() | 以字典的形式填充 |
print("{year}-{month}".format_map({‘year‘: 2018, ‘month‘: 2}))
|
‘S‘.split(‘s‘) | 以任何s字符为分隔符 | |
‘S‘.splitlines() | 以\n为分隔符 | |
‘S‘.startends(s) | 判断是否是以s开头 | |
‘S‘.swapcase() | 小写换大写,大写换小写 | |
‘S‘.title() | 转换为title格式 | |
‘S‘.zfill() | 补位 |
四.字典
假设有一个字典为info{key1:value1, key2:value2,....... }:
del info[key] | |
info.pop(key) | |
info.popitem | 随机删除 |
info.get(key) | 获取 |
key in info | 判断key是否在info中 |
info.values() | |
info.keys() | |
info.setdefault(key:value) | 若能取到key则取出,如果不能则赋值 |
info.update(info2) | 合并,有交叉则更新,没有交叉则创建 |
info.items() | 字典转换为列表 |
dict.fromkeys([‘1‘,‘2‘,‘3‘], ‘good‘) | 创建新字典,但是改其中一个value,其余的全部被改变,类似于浅copy |
注:1.key尽量不要使用中文;
2.循环的方式:
第一种高效,推荐使用:
for i in info: print(i, info[i])
第二种由于要将字典转换为列表,效率低下,不推荐使用:
for k,v in info.items(): print(k, v)