python数据类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python数据类型相关的知识,希望对你有一定的参考价值。
1.浮点型
1.1浮点数定义
浮点数是属于有理数中某特定子集的数的集合,在计算机中泳衣近>似表示任意某个实数。
具体的说,这个实数有一个整数或定点数(即尾数)乘以某个特定>的基数的整数次幂得到(10**4,10为基数),这种表示方法类似于基数为10的科学计数法。
1.2有理数
数学上,有理数是一个整数a和一个非0整数的比,例如:3/8,也称为分数,0也是有理数,有理数是整数和分数的集合,整数也可看做是分母为1的分数。
有理数的小数部分是有限或无限循环的数
1.3无理数
无理数,也称为无限不循环小数,不能写成分数形式。常见的无理数有非完全平方数的平方根,圆周率
1.4实数
实数是有理数和无理数的总称
1.5科学计数法
科学计数法是指把一个数表示成a10的n次幂的形式(1<a<10,n为正整数)。例如:199714000000=1.9971410^11。计算器或电脑表达10的幂是使用E或e,也就是199714000000=1.99714*E11,用幂的形式可以表达一些较大的数。
1.6复数
复数是指能写成a+bi,这里a和b是实数,i是虚数单位
1.7浮点精度
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差
Python默认是17位精度,也就是小数后面16位,尽管有16位,但是这个精度却是越往后越不准。这个问题不止存在与Python中,其他语言也是一样,原因与浮点数存储结构有关。
# 通过Decimal的方式来设置,推荐这种方式,在java中对于小数的处理也是使用Decimal来计算的,可设置保留的小数位数
>>> from decimal import *
>>> getcontext().prec = 50
>>> a = Decimal(1)/Decimal(3)
>>> print(a)
0.33333333333333333333333333333333333333333333333333
# 自行设置保留的小数位数,不推荐,后面的小数位数是不准确的
>>> a = ("%.30f" % (1.0/3))
>>> a
‘0.333333333333333314829616256247‘
>>> a=1/3
>>> print(a)
0.3333333333333333
>>> a=0.901239329312313123123123123213131313131312321313121111111
>>> print(a)
0.9012393293123131
2.列表
列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行方便的增删改查操作
列表是有序的,因为有索引
2.1创建
L1 = [] # 定义空列表
L2 = [‘a‘, 2, ‘3‘, ‘b‘] # 存四个值,索引为0-3
L3 = [‘abc‘, [‘ww‘, ‘ee‘]] # 嵌套列表
L4 = list()
msg="""
L1 = %s
L2 = %s
L3 = %s
L4 = %s
""" % (L1, L2, L3, L4)
print(msg)
E:PythonProjectpython-testvenvP3Scriptspython.exe E:/PythonProject/python-test/BasicGrammer/test.py
L1 = []
L2 = [‘a‘, 2, ‘3‘, ‘b‘]
L3 = [‘abc‘, [‘ww‘, ‘ee‘]]
L4 = []
2.2查询
>>> L2 = [‘a‘, ‘b‘, ‘c‘, ‘a‘, 1, 2]
>>> L2[2]
‘c‘
>>> L2[-1]
2
>>> L2[-2]
1
>>> L2.index(‘a‘)
0
>>> L2.count(‘a‘)
2
>>>
2.3切片
包头不包尾
>>> L2[0:3] # 返回从索引0到3的元素
[‘a‘, ‘b‘, ‘c‘]
>>> L2[0:-1] # 返回从索引0到最后一个值,不包含最后一个值
[‘a‘, ‘b‘, ‘c‘, ‘a‘, 1]
>>> L2[2:4] # 返回从索引2到4的值,不包含索引为4的值
[‘c‘, ‘a‘]
>>> L2[3:] # 返回从索引值为3到最后一个值
[‘a‘, 1, 2]
>>> L2[:3] # 返回从开头到索引为值为3,但不包含索引为3的值
[‘a‘, ‘b‘, ‘c‘]
>>> L2[1:5:2] # 返回从索引值为1到第5的值,但步进为2(隔一个取一个值)
[‘b‘, ‘a‘]
>>> L2[:] # 返回所有值
[‘a‘, ‘b‘, ‘c‘, ‘a‘, 1, 2]
>>> L2[::2] # 按步长为2,返回所有值
[‘a‘, ‘c‘, 1]
>>>
2.4增加
>>> L2.append(‘A‘) #列表后追加A
>>> L2
[‘a‘, ‘b‘, ‘c‘, ‘a‘, 1, 2, ‘A‘]
>>> L2.insert(3,‘B‘) #索引为3处插入B
>>> L2
[‘a‘, ‘b‘, ‘c‘, ‘B‘, ‘a‘, 1, 2, ‘A‘]
2.5修改
>>> L2
[‘a‘, ‘b‘, ‘c‘, ‘B‘, ‘a‘, 1, 2, ‘A‘]
>>> L2[3] = ‘C‘ # 索引为3处修改为C
>>> L2
[‘a‘, ‘b‘, ‘c‘, ‘C‘, ‘a‘, 1, 2, ‘A‘]
>>> L2[0:3] = ‘ABCDE‘ # 索引为0-3修改为‘ABCDE‘
>>> L2
[‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘C‘, ‘a‘, 1, 2, ‘A‘]
2.6删除
>>> L2.pop() # 删除最后一个元素,并返回最后一个元素
‘A‘
>>> L2
[‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘C‘, ‘a‘, 1, 2]
>>> L2.remove(‘C‘) # 左边开始,第一个匹配的字符
>>> L2
[‘A‘, ‘B‘, ‘D‘, ‘E‘, ‘C‘, ‘a‘, 1, 2]
>>> del L2[2] # 删除索引为2的字符
>>> L2
[‘A‘, ‘B‘, ‘E‘, ‘C‘, ‘a‘, 1, 2]
>>> del L2[0:1] # 删除索引从0开始,到索引为1的字符,不包含索引为1的字符
>>> L2
[‘B‘, ‘E‘, ‘C‘, ‘a‘, 1, 2]
2.7循环
for i in range(10):
print(i)
for循环是不能死循环的
while循环是能够死循环的
while True:
print("hello")
L2 = [‘B‘, ‘E‘, ‘C‘, ‘a‘, 1, 2]
for i in L2:
print(i)
E:PythonProjectpython-testvenvP3Scriptspython.exe E:/PythonProject/python-test/BasicGrammer/test.py
B
E
C
a
1
2
2.8排序
#按照ASCII码排序
python2
>>> L2 = [‘B‘, ‘#‘, ‘C‘, ‘!‘, 1, 2]
>>> L2.sort()
>>> L2
[1, 2, ‘!‘, ‘#‘, ‘B‘, ‘C‘]
>>> L2.reverse()
>>> L2
[‘C‘, ‘B‘, ‘#‘, ‘!‘, 2, 1]
>>>
python3
>>> L2 = [‘B‘, ‘#‘, ‘C‘, ‘!‘, 1, 2]
>>> L2.sort()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ‘<‘ not supported between instances of ‘int‘ and ‘str‘
2.9其他用法
>>> L2
[‘C‘, ‘B‘, ‘#‘, ‘!‘, 2, 1]
>>> L2.extend([‘a‘, ‘b‘, ‘c‘]) # 扩展列表
>>> L2
[‘C‘, ‘B‘, ‘#‘, ‘!‘, 2, 1, ‘a‘, ‘b‘, ‘c‘]
>>> L2[2] = [‘name‘,‘vita‘] # 设置嵌套列表
>>> L2
[‘C‘, ‘B‘, [‘name‘, ‘vita‘], ‘!‘, 2, 1, ‘a‘, ‘b‘, ‘c‘]
>>> L2[2][1] # 取出嵌套列表中的值
‘vita‘
>>> L2.clear() # 清空列表
>>> L2
[]
python2中,无clear方法
>>> L2.clear()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: ‘list‘ object has no attribute ‘clear‘
以上是关于python数据类型的主要内容,如果未能解决你的问题,请参考以下文章