admin管理员组

文章数量:814276

python的常用数组工具

写在前面:

疫情期间在家无聊,写了一个简易的常用数组工具
功能模块主要是排序/计算
当然排序可以选择升序及降序排列
为了方便用户,加入了删除/查找/插入等额外的功能
计算模块则包括了求和/求积/标准差以及百分位数等功能
我觉得可以覆盖一些常用的数组处理
如果你不想用一些复杂的大型软件,这个会是一个很好的小工具~
对于软件的交互,我还是设计的比较简便的
全程敲数字键就ok了,很好上手!

编辑后:

在之前的基础上根据意见加入了文件读取的功能,用户可以直接在指定文件夹下新建一个data.txt来进行计算,这个在数据量大的情况下免去了一个个手动输入的麻烦,功能是一样的

from functools import reduce
import numpy
import os
import sys
for k in range(100):print('欢迎使用常用数组工具')select = input('请选择操作模式:\n1:手动输入\n2:读取文件\n请输入对应功能代码:')if select == '1':print('手动输入模式:\n1:排序\n2:计算\n3:退出')a = input('请输入您想要使用的功能代码:')# 数据的正反向排序if a == '1':cishu = input('请输入您想排序的数值个数:')cishu2 = int(cishu)data = []for i in range(cishu2):shuju = input('请输入您想排序的第%d个数值:' % (i+1))data.append(shuju)reshape = [int(i) for i in data]b = input('您想要升序还是降序\n1:升序\n2:降序\n请输入您想要使用的功能代码:')if b == '1':result = sorted(reshape)  # 正向排序函数print('输入数组为:', reshape)print('排序后数组为:', result)elif b == '2':result = sorted(reshape)  # 正向排序函数result.reverse()   # 反向排序函数print('输入数组为:', reshape)print('排序后数组为:', result)else:print('指令错误,请检查后重试')for p in range(100):c = input('是否需要继续操作\n1:插入\n2:修改\n3:删除\n4:退出\n5:查询\n请输入您想要使用的功能代码:')if c == '1':xindata = input('请输入您想插入的值:')weizhi = input('请输入您想插入的位置:')weizhi1 = int(weizhi)reshape.insert(weizhi1-1, xindata)print(reshape)reshape1 = [int(l) for l in reshape]p = input('您想要升序还是降序,分别以1/2表示:')if p == '1':result2 = sorted(reshape1)  # 正向排序函数print(result2)elif p == '2':result2 = sorted(reshape1)  # 正向排序函数result2.reverse()  # 反向排序函数print(result2)else:print('指令错误,请检查后重试')elif c == '2':xin = input('请输入您想修改的值:')di = input('请输入您想修改值的所在位置:')di1 = int(di)xin2 = int(xin)reshape[di1-1] = xin2s = input('您想要升序还是降序,分别以1/2表示:')if s == '1':result = sorted(reshape)  # 正向排序函数print('输入数组为:', reshape)print('排序后数组为:', result)elif s == '2':result = sorted(reshape)  # 正向排序函数result.reverse()  # 反向排序函数print('输入数组为:', reshape)print('排序后数组为:', result)else:print('指令错误,请检查后重试')elif c == '3':xin3 = input('请输入您想删除的数据位置:')xin4 = int(xin3)reshape3 = reshape.pop(xin4-1)g = input('您想要升序还是降序,分别以1/2表示:')if g == '1':result = sorted(reshape)  # 正向排序函数print('输入数组为:', reshape)print('排序后数组为:', result)elif g == '2':result = sorted(reshape)  # 正向排序函数result.reverse()  # 反向排序函数print('输入数组为:', reshape)print('排序后数组为:', result)else:print('指令错误,请检查后重试')elif c == '4':breakelif c == '5':gg = input('请输入您想要查询的具体数值:')xin = [str(i) for i in reshape]if gg in xin:zhi = xin.index(gg)print('您查询的数值的首次出现位置为:', (zhi+1))juti = [i for i, x in enumerate(xin) if x == gg]  # enumerate是遍历函数,产生一个list,数据类型为intjuti1 = [i + 1 for i in juti]print('您查询的数值的所有出现位置为:', juti1)if gg not in xin:print('列表无查询项,请重试')else:print('指令错误,请检查后重试')elif a == '3':exit()elif a == '2':xuan = input('请选择您想要进行的计算\n1:求和\n2:求积\n3:平均值\n4:标准差\n5:百分位数\n请输入您想要使用的功能代码:')if xuan == '1':one = input('请输入您想要计算的数值个数:')cishu3 = int(one)data2 = []for i in range (cishu3):two = input('请输入第%d个数值:' % (i+1))data2.append(two)reshape2 = [int(i) for i in data2]print('输入列表为:', reshape2)print('列表元素之和为:', sum(reshape2))  # 直接列表元素求和elif xuan == '2':three = input('请输入您想要计算的数值个数:')cishu4 = int(three)data3 = []for i in range(cishu4):four = input('请输入第%d个数值:' % (i+1))data3.append(four)reshape3 = [int(i) for i in data3]print('输入列表为:', reshape3)jie = reduce(lambda x, y: x * y, reshape3)  # reduce函数的顺序累积print('列表元素乘积:', jie )elif xuan == '3':five = input('请输入您想要计算的数值个数:')cishu5 = int(five)data4 = []for i in range(cishu5):four = input('请输入第%d个数值:' % (i + 1))data4.append(four)reshape4 = [int(i) for i in data4]print('输入列表为:', reshape4)ping = numpy.average(reshape4)  # numpy中的average函数print('列表元素平均值:', ping)elif xuan == '4':six = input('请输入您想要计算的数值个数:')cishu5 = int(six)data5 = []for i in range(cishu5):four = input('请输入第%d个数值:' % (i + 1))data5.append(four)reshape4 = [int(i) for i in data5]print('输入列表为:', reshape4)cha = numpy.std(reshape4)  #numpy中的std函数print('列表元素标准差为:', cha)elif xuan == '5':seven = input('请输入您想要计算的数值个数:')cishu6 = int(seven)data6 = []for i in range(cishu6):five = input('请输入第%d个数值:' % (i + 1))data6.append(five)a = [int(i) for i in data6]aa = input('请输入您想要的百分位:')aaa = int(aa)baifen = numpy.percentile(a, aaa)print('列表的%d%%位数为:' % aaa, baifen)else:print('指令错误,请检查后重试!')else:print('指令错误,请检查后重试!')if select == '2':print('文件读取模式:\n1:排序\n2:计算\n3:退出')a = input('在将需读取的名为data.txt的文件放入当前文件夹后,输入您想要使用的功能代码:')filename = 'data.txt'if a == '1':if os.path.exists(filename):with open(filename, 'r') as file_to_read:lines = file_to_read.read()datamat = lines.split()changdu = len(datamat)reshape = [int(i) for i in datamat]datamat2 = numpy.array(reshape)print('当前文件内数据量:%d' % changdu)b = input('您想要升序还是降序\n1:升序\n2:降序\n请输入您想要使用的功能代码:')if b == '1':result = sorted(datamat2)  # 正向排序函数print('输入数组为:', datamat2)print('排序后数组为:', result)elif b == '2':result = sorted(datamat2)  # 正向排序函数result.reverse()  # 反向排序函数print('输入数组为:', datamat2)print('排序后数组为:', result)else:print('指令错误,请检查后重试!')else:print('data.txt在当前目录下不存在,请检查后重试!')elif a == '2':if os.path.exists(filename):with open(filename, 'r') as file_to_read:lines = file_to_read.read()datamat = lines.split()  # 空格括号内空参数changdu = len(datamat)reshape = [int(i) for i in datamat]datamat2 = numpy.array(reshape)print('当前文件内数据量:%d' % changdu)xuan = input('请选择您想要进行的计算\n1:求和\n2:求积\n3:平均值\n4:标准差\n5:百分位数\n请输入您想要使用的功能代码:')if xuan == '1':print('输入列表为:', datamat2)print('列表元素和:', sum(datamat2))elif xuan == '2':print('输入列表为:', datamat2)jie = reduce(lambda x, y: x * y, datamat2)  # reduce函数的顺序累积;lambda是匿名函数print('列表元素乘积:', jie)elif xuan == '3':print('输入列表为:', datamat2)print('列表元素平均值:', numpy.average(datamat2))elif xuan == '4':print('输入列表为:', datamat2)print('列表元素标准差:', numpy.std(datamat2))elif xuan == '5':aa = input('请输入您想要的百分位:')aaa = int(aa)print('列表的%d%%位数为:' % aaa, numpy.percentile(datamat2, aaa))else:print('指令错误,请检查后重试!')else:print('data.txt在当前目录下不存在,请检查后重试!')else:print('指令错误,请检查后重试!')else:print('指令错误,请检查后重试!')

本文标签: python的常用数组工具