博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python金融应用(二)基本数据类型和结构
阅读量:5122 次
发布时间:2019-06-13

本文共 4437 字,大约阅读时间需要 14 分钟。

一.基本数据类型

1.整形 

a=10type(a)Out[75]: int a.bit_length() #字节长度 Out[76]: 4 整形相除会返回整形,想要返回浮点数,需要用浮点数相除 1./4 Out[79]: 0.25

  

2.浮点型

b=0.25type(b)Out[80]: float 浮点数表示成有理分式

 b.as_integer_ratio()

  Out[81]: (1, 4)

那么怎么确定精度呢? 需要引入decimal模块

 import decimal

 from decimal import Decimal

 decimal.getcontext()

 Out[82]: Context(prec=8, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[Inexact, Rounded], traps=[InvalidOperation, DivisionByZero, Overflow])

可以看到 精度是28,还有最大值、最小值 可以改变精度

  decimal.getcontext().prec=4 # 改变精度为4

  e=Decimal(1)/Decimal(11)  #计算1/11

  print(e)

输出结果:

 0.09091

确定精度为10:

 decimal.getcontext().prec=10

 e=Decimal(1)/Decimal(11)

 print(e)

 0.09090909091

 

3.字符串

字符串表示文本

t='this is a string't.capitalize()Out[88]: 'This is a string'

按tab键可以有自动补全功能,可以查看内建方法。比如:图中有字符串的一些内建方法,capitalize等。

t.split()  #字符串的分割Out[23]: ['this', 'is', 'a', 'string']  #结果分割为列表 查找

 t.find('a')  #查找元素‘a’,返回元素位置,注意:python位置下标从0开始

 Out[25]: 8

 替换

 t.replace(' ','|')  #把空格替换为‘|’

 Out[27]: 'this|is|a|string'

 去除操作

 s='http://wwww.python.org'

 s.strip('htp:/') #去除'htp:/'
 Out[29]: 'wwww.python.org'

 

正则表达式 re的简单应用

import re

series="""

'01/18/2014 13:00:00',100,'1st',   #三引号表示可以换行
'01/18/2014 13:00:00',110,'2nd',
'01/18/2014 13:00:00',120,'3rd',
"""

dt=re.compile(r"'[0-9/:\s]+'")  #匹配规则:反斜杠表示转译
result=dt.findall(series)
print(result)

["'01/18/2014 13:00:00'", "'01/18/2014 13:00:00'", "'01/18/2014 13:00:00'"] #返回值是一个列表

接着把时间序列转化为datetime对象

from datetime import datetime

pydt=datetime.strptime(result[0].replace("'",""),'%m/%d/%Y %H:%M:%S')

pydt

Out[102]: datetime.datetime(2014, 1, 18, 13, 0)

type(pydt)

Out[103]: datetime.datetime

小注:

datetime模块的时间与字符串转化:

import datetime

from datetime import datetime

datetime.datetime.strftime():由日期格式转化为字符串格式

datetime.datetime.now().strftime('%m-%d-%Y %H:%M:%S')

Out[105]: '05-02-2018 18:27:58'

datetime.datetime.strptime():由字符串格式转化为日期格式

datetime.datetime.strptime('05-16-2017 21:01:35', '%m-%d-%Y %H:%M:%S')

Out[107]: datetime.datetime(2018, 5, 2, 18, 27, 58)

具体参考:https://www.cnblogs.com/cindy-cindy/p/6720196.html

 

二.基本数据结构

1.元组:tpule

 

t=(1,2.5,'date')t1=1,2.5,'date'type(t1)Out[3]: tuplet1[2]Out[4]: 'date'

只有两个方法 : 计数与下表返回索引

t.count(para)
t.index(para)

t.count(1)Out[6]: 1t.index(1)Out[7]: 0

 

2.列表

列表的构建

l=[1,2,1.5]l1=[x for x in range(10)]l2=list(t)print(l,'\n',l1,'\n',l2)[1, 2, 1.5]  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  [1, 2.5, 'date']

 

操作方法:

print('abc\ndef')  #\n  换行abcdeftype(l1)Out[10]: listl.append([4,3])  #添加列表lOut[11]: [1, 2, 1.5, [4, 3]]l.extend([1,3,6])  # 添加元素lOut[12]: [1, 2, 1.5, [4, 3], 1, 3, 6]l.insert(1,'date')lOut[13]: [1, 'date', 2, 1.5, [4, 3], 1, 3, 6]l.remove('date')lOut[14]: [1, 2, 1.5, [4, 3], 1, 3, 6]p=l.pop(2)  # pop 方法 可用返回值接受print(l,'\n',p)[1, 2, [4, 3], 1, 3, 6]  1.5l[:2]Out[16]: [1, 2]

 

3.字典

d={   'name':'John',   'sex':'male',   'age':18,   'country':'China'}d['name'] Out[17]: 'John'd.keys()  # 所有key组成的列表Out[18]: dict_keys(['name', 'sex', 'age', 'country'])d.values()Out[19]: dict_values(['John', 'male', 18, 'China'])d.items()  # 字典转化为 list list中元素是元组,元组由字典的key 和balue组合Out[20]: dict_items([('name', 'John'), ('sex', 'male'), ('age', 18), ('country', 'China')])print('{} is {}'.format(d['name'],d['age']))John is 18birth=Trueif birth is True:    d['age']+=1print(d['age'])19

  

字典的遍历

for i in d:    print(i)namesexagecountry
for item in d.items():    print(item)('name', 'John')('sex', 'male')('age', 19)('country', 'China')
for values in d.values():    print(values)Johnmale19China

 

4.集合

s=set(['u','i','du','du','u'])    print(s)   t=set(['du','u'])   t{
'i', 'u', 'du'}Out[27]: {
'du', 'u'}

交并补

s.union(t)Out[29]: {'du', 'i', 'u'}s.intersection(t)Out[30]: {'du', 'u'}s.difference(t)Out[31]: {'i'}

5. 函数编程

简单的函数:

def f(x):    return x**2f(2)Out[32]: 4  

 

求偶数:

def even(x):    return x%2==0even(2)Out[33]: True

  

map函数:

 python3下的map()函数返回类型为iterators,不再是list

map()的使用方法形如map(f(x),Itera).对,它有两个参数,第一个参数为某个函数,第二个为可迭代对象。

list(map(even,range(4)))Out[34]: [True, False, True, False]list(map(lambda x:x**2,range(4)))Out[35]: [0, 1, 4, 9]

 

filter 函数:

过滤功能,刷选出符合条件的

list(filter(even,range(15)))Out[36]: [0, 2, 4, 6, 8, 10, 12, 14]

 

reduce函数:

 reduce()的使用方法形如reduce(f(x),Itera).对,它的形式和map()函数一样。不过参数f(x)必须有两个参数。reduce()函数作用是:把结果继续和序列的下一个元素做累积计算

from functools import reducereduce(lambda x,y:x+y,range(5))Out[37]: 10

其实就是类似下边的函数:

def cunsum(x):    total=0    for i in range(x):        total+=i    return totalcunsum(5)Out[38]: 10

 

转载于:https://www.cnblogs.com/jin-liang/p/8981595.html

你可能感兴趣的文章
【Java】synchronized与lock的区别
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
STM32F10x_RTC秒中断
查看>>
display:none和visiblity:hidden区别
查看>>
C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
查看>>
SpringMVC学习总结(三)——Controller接口详解(1)
查看>>
牛的障碍Cow Steeplechase
查看>>
Zookeeper选举算法原理
查看>>
3月29日AM
查看>>
利用IP地址查询接口来查询IP归属地
查看>>
HTML元素定义 ID,Class,Style的优先级
查看>>
构造者模式
查看>>
http和https的区别
查看>>
Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法...
查看>>
找到树中指定id的所有父节点
查看>>
今天新开通了博客
查看>>
AS3优化性能笔记二
查看>>
Java高阶回调,回调函数的另一种玩法
查看>>