栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python中的各种方法一览

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python中的各种方法一览

目录

字符串处理

正负数转换

dict() 函数

取整

自增和自减

保留n位小数

PriorityQueue

multiprocessing的例子

Python 3 generator的next方法

引用上级或上上级目录中的文件

astype()

super()

python range函数

正负无穷

删除文件夹下所有文件

复制文件

xlsxwriter

图像处理

numpy相关

生成新对象

交换值

打印

pandas的to_csv最左边多一列的问题

整数相除返回浮点数

读取键盘输入


字符串处理

见以下链接:

https://blog.csdn.net/ytomc/article/details/113970424

正负数转换

负数转正数:abs(n)

正数转负数:int("-"+str(n))

dict() 函数

创建一个字典。

>>>dict()                        # 创建空字典
{}
>>> dict(a='a', b='b', t='t')     # 传入关键字
{'a': 'a', 'b': 'b', 't': 't'}
>>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
{'three': 3, 'two': 2, 'one': 1} 
>>> dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
{'three': 3, 'two': 2, 'one': 1}
>>>

取整

向上取整

math.ceil( x )

向下取整

math.floor( x )

自增和自减

在python中是没有自增和自减的,但在python中存在 i = i + 1和 i = i -1 的情况。  因为Python的模型规定,数值对象是不可改变的。 i = i + 1 相当于重新创建了一个变量 i ,而不是改变了 i 中的数值。

保留n位小数

用round函数 例如: a=12.34567889 round(a,2)=12.35 保留两位小数 round(a,2)=12.35 保留三位小数

PriorityQueue

PriorityQueue是优先级队列。越小的优先级越高,会被先取出。

优先队列在插入元素的时候已经对元素做了排序,把最小的元素放在队尾。

Python在对tuple类型作比较时,采用的是按照元素顺序,找到第一个可比较的元素进行比较。

multiprocessing的例子

同时展示了queue和pipe的用法,在image_put, image_get, predict 函数中参数要对应上。

queue获得队列中数据用的是get()方法,pipe获得队列数据用的是recv()方法。

import multiprocessing as mp

pipe = mp.Pipe()
mp.set_start_method(method='spawn')  # init
    queues = [mp.Queue(maxsize=4) for _ in camera_ip_l]

    processes = []
    for queue, camera_ip in zip(queues, camera_ip_l):
        processes.append(mp.Process(target=image_put, args=(queue, user_name, user_pwd, camera_ip)))
        processes.append(mp.Process(target=image_get, args=(queue, camera_ip,pipe[0],)))

    processes.append(mp.Process(target=predict, args=(pipe[1],)))

    for process in processes:
        process.daemon = True
        process.start()
    for process in processes:
        process.join()

 

Python 3 generator的next方法

g.next() 改为 g.__next__()

g.next()是python 2的用法

 

引用上级或上上级目录中的文件

上级引用 import sys sys.path.append("..")

上上级引用 import sys sys.path.append("...") 

 

astype()

转换数组的数据类型。

int32 --> float64        完全ojbk

float64 --> int32        会将小数部分截断

string_ --> float64        如果字符串数组表示的全是数字,也可以用astype转化为数值类型

super()

super() 函数是用于调用父类(超类)的一个方法。

super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。

MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class FooParent(object):
    def __init__(self):
        self.parent = 'I'm the parent.'
        print ('Parent')
    
    def bar(self,message):
        print ("%s from Parent" % message)
 
class FooChild(FooParent):
    def __init__(self):
        # super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类 FooChild 的对象转换为类 FooParent 的对象
        super(FooChild,self).__init__()    
        print ('Child')
        
    def bar(self,message):
        super(FooChild, self).bar(message)
        print ('Child bar fuction')
        print (self.parent)
 
if __name__ == '__main__':
    fooChild = FooChild()
    fooChild.bar('HelloWorld')

python range函数

python range() 函数可创建一个整数列表。

函数语法 range(start, stop[, step])

参数

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5); stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5 step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

倒序

for i in range(5, -1, -1)

如果倒序的话最后要定义一个-1表示倒序,并且-1的步长。

正负无穷

float("inf"), float("-inf")

删除文件夹下所有文件
def del_file(path_data):
    for i in os.listdir(path_data) :# os.listdir(path_data)#返回一个列表,里面是当前目录下面的所有东西的相对路径
        file_data = path_data + "/" + i#当前文件夹的下面的所有东西的绝对路径
        if os.path.isfile(file_data) == True:#os.path.isfile判断是否为文件,如果是文件,就删除.如果是文件夹.递归给del_file.
            os.remove(file_data)
        else:
            del_file(file_data)
path_data = r"E:codepracticedata"
del_file(path_data)

复制文件

方法很多,我经常用的是shutil.copy

shutil.copy(source, destination)

xlsxwriter

xlsxwriter这个模块,它生成的文件后缀名为.xlsx,最大能够支持1048576行数据,16384列数据

wirte(row, col, *args)

向工作表单元格写入普通的数据。

参数:

  • row - 单元格所在的行(索引从0开始计数)
  • col - 单元格所在的列(索引从0开始计数)
  • *args - 传递到子方法的附加参数诸如数字,字符串,单元格格式。

Excel区分不同的数据类型诸如字符串,数字,空格,公式和超链接。为了简化向XlsxWriter文件写入数据的过程, write()方法作为以下几个特定方法的假名(译者注:意思就是通常不需要程序员显式地指定以下方法,在使用write()方法时XlxsWriter会按照规则判断数据类型并采用对应的方法写入数据):

  • write_string()
  • write_number()
  • write_blank()
  • write_formula()
  • write_datetime()
  • write_boolean()
  • write_url()

write()处理数据的规则如下:

  • 数据类型诸如float, int, long, decimal.Decimal和fractions.Fraction 使用write_number()方法。
  • 数据类型诸如datatime.datetime,datetime.datedatetime.time 或 datetime.timedelta 使用write_datetime()方法。
  • None和空字符串“”使用write_blank()方法。
  • 数据类型bool使用write_boolean()。

字符串(String)则按照以下规则处理数据:

  • 以“=”开始的匹配公式字符串使用write_formula()方法。这个方法可以被覆盖,见下。
  • 匹配支持的URL的字符串使用write_url()方法。这个方法可以被覆盖,见下。
  • 为了防止Excel警告“Numbers Stored as Text”,当Workbook()构造器strings_to_numbers选项为True时,被float()方法转换为数字的字符串会使用write_number()方法。见下。
  • 不匹配以上条件的字符串会使用write_string()方法。

如果值不匹配以上所有类型,最终会使用 float()来检查它是否与用户定义的浮点类型相对应。如果不对应,则会使用 write_number()方法。

最后,如果这些规则全都不匹配,那么程序会抛 TypeError异常。

例子

import xlsxwriter

#写excel
def write_excel(): 
  workbook = xlsxwriter.Workbook('chat.xlsx')#创建一个excel文件
  worksheet = workbook.add_worksheet(u'sheet1')#在文件中创建一个名为TEST的sheet,不加名字默认为sheet1
 
  worksheet.set_column('A:A',20)#设置第一列宽度为20像素
  bold= workbook.add_format({'bold':True})#设置一个加粗的格式对象
 
  worksheet.write('A1','HELLO')#在A1单元格写上HELLO
  worksheet.write('A2','WORLD',bold)#在A2上写上WORLD,并且设置为加粗
  worksheet.write('B2',U'中文测试',bold)#在B2上写上中文加粗
 
  worksheet.write(2,0,32)#使用行列的方式写上数字32,35,5
  worksheet.write(3,0,35.5)#使用行列的时候第一行起始为0,所以2,0代表着第三行的第一列,等价于A4
  worksheet.write(4,0,'=SUM(A3:A4)')#写上excel公式
  workbook.close()

if __name__ == '__main__':
    # 写入Excel
    write_excel();
    print ('写入成功')
   

图像处理

见以下链接:

https://blog.csdn.net/ytomc/article/details/113876176

numpy相关

见以下链接:

https://blog.csdn.net/ytomc/article/details/113970212

生成新对象

python中对象,赋值后是同一地址,如果是可变对象,对其中一个修改会影响到另一个,如果要生成完全新的对象,应使用deepcopy

import copy

data1=copy.deepcopy(data)

交换值

arr[i], arr[j] = arr[j], arr[i]

打印

python的print字符串前面加f表示格式化字符串,加f后可以在字符串里面使用用花括号括起来的变量和表达式,如果字符串里面没有表达式,那么前面加不加f输出应该都一样。

pandas的to_csv最左边多一列的问题

设置index = False

整数相除返回浮点数

文件第一行

from __future__ import division

然后正常写相除的代码即可。

读取键盘输入
# -*- coding: utf-8 -*-
 
import sys
 
#输入的无论是什么,都会转成字符和字符串
#sys.stdin.readline() 会读取末尾'n',加.strip(),去掉回车符,同时去掉前后的空格
 
# 一 
#输入一个数
n = int(sys.stdin.readline().strip())      #输入一个元素,并转成整型int
print(n)
 
# 二 
#输入有n行(已知行数n),用for循环,一行有任意个字符字符串都可以
seq = [ ]
for i in range(n):
    line = sys.stdin.readline().strip()       #line此时是字符串列表,不知line有多少个元素
    value = map(int,line.split())   #map(函数,列表)Python2.返回列表,Python3.返回迭代器。
    seq += value                     #合并每一行列表
print(seq)
 
# 三
#不确定输入有多少行,用while循环
seq = [ ]
while 1:
    line = sys.stdin.readline().strip()     #line此时是字符串列表,并已去掉前后空格 回车符
    if line:
        line = map(int,line.split()) #把line的空格元素去掉,转成字符串列表list,并转成整型int
    else:
        break
    seq += line
print(seq)

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/833753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号