python日常总结

项目场景:

`python日常简单库的使用如:txt文件操作、numpy操作、字典操作、取整操作等。


python读写txt

# 1.读取所有行
with open('test.txt','r', encoding='UTF-8') as f:
    data = f.readlines()
print(data)
# 2.读取单行
with open('test.txt','r', encoding='UTF-8') as f:
    data = f.readline()
print(data)
# 3.读取文件所有内容
with open('test.txt','r', encoding='UTF-8') as f:
    data = f.read()
print(data)
# 4.写文件操作
>>> f = open('test.txt', 'w') # 若是'wb'就表示写二进制文件
>>> f.write('Hello, world!')
>>> f.close()

numpy保存数据/加载数据/字典格式

import numpy as np
test = {'name':'xiaoming','age':12,'job':'student'}
>>> import numpy as np
>>> test = {'name':'xiaoming','age':12,'job':'student'}
>>> np.save('test.npy',test)
>>> load_test = np.load('test.npy',allow_pickle=True)
>>> load_test.item()
{'name': 'xiaoming', 'age': 12, 'job': 'student'}
>>> load_test.item().get('name')
'xiaoming'

循环读取字典

>>> test = {'name':'xiaoming'}
>>> for (key,value) in test.items():
>>>     print(key+':'+value)
'name':'xiaoming'

四舍五入

>>> round(1.2)
1
>>> round(1.9)
2

向上向下取整

# 向上取整
>>> import math
>>> math.ceil(1.1)
2
>>> math.ceil(1.4)
2
>>> math.ceil(1.9)
2
# 向下取整
>>> import math
>>> math.floor(1.9)
1
>>> math.floor(1.5)
1
>>> math.floor(1.2)
1

python列表追加元素的两种方式

# 第一种方式(append)
>>> aaa = [1,2,3]
>>> bbb = [4,5,6]
>>> aaa.append(bbb)
>>> aaa
[1, 2, 3, [4, 5, 6]]
第二种方式(extend)
>>> aaa = [1,2,3]
>>> bbb = [4,5,6]
>>> aaa.extend(bbb)
>>> aaa
[1, 2, 3, 4, 5, 6]

python列表排序内置函数

# sort直接改变原始列表,没有返回值。通过设置超参数reverse来控制正反序
>>> aaa = [1,2,3]
>>> bbb = [4,5,6]
>>> aaa = [1,3,2,5,4,2]
>>> aaa
[1, 3, 2, 5, 4, 2]
>>> aaa.sort()
>>> aaa
[1, 2, 2, 3, 4, 5]
>>> aaa.sort(reverse=True)
>>> aaa
[5, 4, 3, 2, 2, 1]
 
# sorted,不直接改变原始列表,有返回值。通过设置超参数reverse来控制正反序
>>> aaa = [1,3,5,2,4,6]
>>> aaa
[1, 3, 5, 2, 4, 6]
>>> bbb = sorted(aaa)
>>> bbb
[1, 2, 3, 4, 5, 6]
>>> ccc = sorted(aaa,reverse=True)
>>> ccc
[6, 5, 4, 3, 2, 1]
 
# 增加知识点
# python中并无直接返回下标的函数,如果需要从pyton底层做这事,可以使用sort或者sorted加上for循环获取index。
# numpy中有函数返回排序后的下标:argsort
# torch自带的sort函数可以直接返回排好序的列表和对应的索引(推荐

python列表逆序

>>> aaa = [1,2,3,4,5,6]
>>> aaa
[1, 2, 3, 4, 5, 6]
>>> aaa.reverse()
>>> aaa
[6, 5, 4, 3, 2, 1]

python中的深拷贝和浅拷贝

"""
概念:
概念:
  浅拷贝:只是增加了一个指针指向已存在的内存地址
  深拷贝:是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存,
表象:假设B复制了A,修改A的时候,看B是否发生变化:
  如果B跟着也变了,说明是浅拷贝
  如果B没有改变,说明是深拷贝
"""
# python赋值(只要初始元素进行了修改,赋值之后的元素也会修改,反之亦然)
>>> aaa = [1,2,3]
>>> bbb = aaa
>>> aaa.append(4)
>>> aaa
[1, 2, 3, 4]
>>> bbb
[1, 2, 3, 4]
>>> aaa[0] = 100
>>> aaa
[100, 2, 3, 4]
>>> bbb
[100, 2, 3, 4]
 
# 浅拷贝(初始元素的直接子元素修改后不会影响到拷贝后的元素,但是如果某个元素是可迭代对象,那么就会影响到后来的元素)
>>> aaa = [1,2,[3,4]]
>>> bbb = aaa.copy()
>>> aaa[0] = 100
>>> bbb.append(0)
>>> aaa
[100, 2, [3, 4]]
>>> bbb
[1, 2, [3, 4], 0]
>>> aaa[2].append(200)
>>> aaa
[100, 2, [3, 4, 200]]
>>> bbb
[1, 2, [3, 4, 200], 0]
 
# 深拷贝(拷贝后的变量和原来的变量没有任何关系,除了值一样,改变前后两个变量都是独立的,不会对另一个产生影响)
>>> import copy
>>> aaa = [1,2,[3,4]]
>>> bbb = copy.deepcopy(aaa)
>>> aaa
[1, 2, [3, 4]]
>>> bbb
[1, 2, [3, 4]]
>>> aaa.append(5)
>>> bbb[0] = 100
>>> aaa
[1, 2, [3, 4], 5]
>>> bbb
[100, 2, [3, 4]]
>>> aaa[2].append(5)
>>> aaa
[1, 2, [3, 4, 5], 5]
>>> bbb
[100, 2, [3, 4]]

python读写excel文件

# 读取excel
>>> import xlrd
>>> readbook = xlrd.open_workbook(r'\test\canying.xlsx')
>>> sheet = readbook.sheet_by_index(1)#索引的方式,从0开始
>>> sheet = readbook.sheet_by_name('sheet2')#名字的方式
>>> nrows = sheet.nrows#行
>>> ncols = sheet.ncols#列
>>> lng = table.cell(i,3).value#获取i行3列的表格值
>>> lat = table.cell(i,4).value#获取i行4列的表格值
 
# 写入excel
>>> import xlwt
>>> writebook = xlwt.Workbook()#打开一个excel
>>> sheet = writebook.add_sheet('test')#在打开的excel中添加一个sheet
>>> sheet.write(i,0,result[0])#写入excel,i行0列
>>> writebook.save('answer.xls')#一定要记得保存

python中的map函数和lambda函数(匿名函数)

>>> def square(x) :         # 计算平方数
...     return x ** 2
...
>>> map(square, [1,2,3,4,5])    # 计算列表各个元素的平方
<map object at 0x100d3d550>     # 返回迭代器
>>> list(map(square, [1,2,3,4,5]))   # 使用 list() 转换为列表
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))   # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]

numpy打乱列表顺序

>>> aaa = [i for i in range(10)]
>>> aaa
[0,1,2,3,4,5,6,7,8,9]
>>> np.random.shuffle(aaa)
>>> aaa
[1 7 5 2 9 4 3 6 0 8]

tensorboardX记录模型训练损失和精度

from tensorboardX import SummaryWriter
import numpy as np
# 训练程序中加入以下内容
writer = SummaryWriter('logs')
for i in range(100):
    #当数据只有一个时
    writer.add_scalar("train_acc",i,i)
    #当数据不止一个时
    writer.add_scalars("train_acc_loss",{"acc":i,"loss":100-i},i)
writer.close()
 
查看训练精度和损失,再另一个终端输入
tensorboard --logdir "logs"

json读写

import json
test_dict = {'bigberg': [7600, {1: [['iPhone', 6300], ['Bike', 800], ['shirt', 300]]}]}
with open("./record.json","w") as f:
    # indent=4的作用是格式化输出
    f.write(json.dumps(test_dict, indent=4))
    print("加载入文件完成...")

str操作(zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0)

num = 1
str(num).zfill(8)
# '00000001'

递归获得一个文件夹内的所有文件(包括子文件夹)

import os
def get_filelist(dir):
    Filepathlist = []
    for home, dirs, files in os.walk(dir):
        for filename in files:
            Filepathlist.append(os.path.join(home, filename))
    return Filepathlist

查询python解释器路径

import sys
import os
 
print('当前 Python 解释器路径:')
print(sys.executable)

报错:

SyntaxError: Non-ASCII character ‘\xe8’ in file 1.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

解决方案:

在Python文件添加开头:#encoding:utf-8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大蠢驴小疯子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值