python数据类型有哪几种?-Python教程

资源魔 75 0

python数据类型有八种,辨别是:数字类型(int以及long)、float类型、单数类型(complex)、字符串类型、列表类型、元组类型、字典类型、布尔类型(True以及False)。

python数据类型有如下八种

数字类型

int以及long

之以是要把int以及long放正在一同的缘由是python3.x之后曾经没有区别int以及long,对立用int。python2.x仍是区别的。上面我以Python2.7为例:

>>> i = 10  
>>> type(i)  
<type 'int'>
>>> i=10000000000  
>>> type(i)  
<type 'long'>

那末为何10就是int,10000000000就是long呢,当然这就以及int的最年夜值无关了,int类型的最年夜值为231-1,即2147483647,也能够用sys.maxint。

>>> 2**31-1  
2147483647L  
>>> sys.maxint  
2147483647

为何用下面的办法求的值就是long型的呢(数字前面加‘L’示意是long型),由于2**31的值为2147483648,这个值是一个long型,用一个long型减去1,后果仍是一个long,但实际上int型的最年夜值就是2147483647

>>> type(2147483647)  
<type 'int'>  
>>> type(2147483648)  
<type 'long'>

float类型

float类型以及其它言语的float根本分歧,浮点数,说白了,就是带小数点的数,精度与机械相干。例如:

>>> i = 10000.1212  
>>> type(i)  
<type 'float'>

complex:单数类型,详细含意及用法可自行查看相干文档。

字符串类型

字符串的申明有三种形式:单引号、双引号以及三引号(包罗三个单引号或三个双引号)。例如:

>>> str1 = 'hello world'  
>>> str2 = "hello world"  
>>> str3 = '''hello world'''  
>>> str4 = """hello world"""  
>>> print str1  
hello world  
>>> print str2  
hello world  
>>> print str3  
hello world  
>>> print str4  
hello world

Python中的字符串有两种数据类型:str类型以及unicode类型。str类型采纳的ASCII编码,也就是说它无奈示意中文。

unicode类型采纳unicode编码,可以示意恣意字符,包罗中文及其它言语。

而且python中没有存正在像c言语中的char类型,就算是单个字符也是字符串类型。字符串默许采纳的ASCII编码,假如要显示申明为unicode类型的话,需求正在字符串后面加之'u'或许'U'。例如:

>>> str1 = "hello"  
>>> print str1  
hello  
>>> str2 = u"中国"  
>>> print str2  
中国

因为名目中常常呈现对字符串的操作,并且因为字符串编码成绩呈现的成绩不少,上面,来讲一下对于字符串的编码成绩。

正在与python打交道的进程中常常会碰着ASCII、Unicode以及UTF-8三种编码。详细的引见请参见这篇文章。

我简略的了解就是,ASCII编码实用英文字符,Unicode实用于非英文字符(例如中文、韩文等),而utf-8则是一种贮存以及传送的格局,是对Uncode字符的再编码(以8位为单元编码)。例如:

u = u'汉'  
print repr(u) # u'\u6c49'  
s = u.encode('UTF-8')  
print repr(s) # '\xe6\xb1\x89'  
u2 = s.decode('UTF-8')  
print repr(u2) # u'\u6c49'  
诠释:申明unicode字符串”汉“,它的unicode编码为”\u6c49“,通过utf-8编码转换后,它的编码变为”\xe6\xb1\x89“。

关于编码的经历总结:

1.正在python文件头申明编码格局 ;

#-*- coding: utf-8 -*-

2.将字符串对立申明为unicode类型,即正在字符串前加u或许U;

3.关于文件读写的操作,倡议实用codecs.open()替代内置的open(),遵照一个准则,用哪一种格局写,就用哪一种格局读;

假定正在一个以ANSI格局保留的文本文件中有“中国汉字”几个字,假如间接用如下代码,而且要正在GUI上或许正在一个IDE中打印进去(例如正在sublime text中,或许正在pydev中打印),就会呈现乱码或许异样,由于codecs会根据文本自身的编码格局读取内容:

f = codecs.open("d:/test.txt")  
content = f.read()  
f.close()  
print content

改用以下办法便可(只对中文起作用):

# -*- coding: utf-8 -*-  
  
import codecs  
  
f = codecs.open("d:/test.txt")  
content = f.read()  
f.close()  
  
if isinstance(content,unicode):  
    print content.encode('utf-8')  
    print "utf-8"  
else:  
    print content.decode('gbk').encode('utf-8')

列表类型

列表是一种可修正的荟萃类型,其元素能够是数字、string等根本类型,也能够是列表、元组、字典等荟萃工具,乃至能够是自界说的类型。其界说形式以下:

>>> nums = [1,2,3,4]  
>>> type(nums)  
<type 'list'>  
>>> print nums  
[1, 2, 3, 4]  
>>> strs = ["hello","world"]  
>>> print strs  
['hello', 'world']  
>>> lst = [1,"hello",False,nums,strs]  
>>> type(lst)  
<type 'list'>  
>>> print lst  
[1, 'hello', False, [1, 2, 3, 4], ['hello', 'world']]

用索引的形式拜访列表元素,索引从0开端,支持正数索引,-1为最初一个.

>>> lst = [1,2,3,4,5]  
>>> print lst[0]  
>>> print lst[-1]  
 
>>> print lst[-2]

支持分片操作,可拜访一个区间内的元素,支持没有同的步长,可行使分片进行数据拔出与复制操作

nums = [1,2,3,4,5]  
print nums[0:3]  #[1, 2, 3] #前三个元素  
  
print nums[3:]   #[4, 5]    #后两个元素  
  
print nums[-3:]  #[3, 4, 5] #后三个元素 没有支持nums[-3:0]  
  
numsclone = nums[:]    
  
print numsclone    #[1, 2, 3, 4, 5]  复制操作  
  
print nums[0:4:2]   #[1, 3]    步长为2  
  
nums[3:3] = ["three","four"]   #[1, 2, 3, 'three', 'four', 4, 5]  正在3以及4之间拔出  
  
nums[3:5] = []    #[1, 2, 3, 4, 5] 将第4以及第5个元素交换为[] 即删除了["three","four"]  
支持加法以及乘法操作
lst1 = ["hello","world"]  
lst2 = ['good','time']  
print lst1+lst2  #['hello', 'world', 'good', 'time']  
  
print lst1*5  #['hello', 'world', 'hello', 'world', 'hello', 'world', 'hello', 'world', 'hello', 'world']

列表所支持的办法,能够用以下形式查看列表支持的公共办法:

>>> [x for x in dir([]) if not x.startswith("__")]  
['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']  
def compare(x,y):  
    return 1 if x>y else -1  
  
  
#【append】  正在列表末尾拔出元素  
lst = [1,2,3,4,5]  
lst.append(6)   
print lst     #[1, 2, 3, 4, 5, 6]  
lst.append("hello")  
print lst     #[1, 2, 3, 4, 5, 6]  
  
#【pop】  删除了一个元素,并前往此元素的值 支持索引 默许为最初一个  
x = lst.pop()  
print x,lst     #hello [1, 2, 3, 4, 5, 6]  #默许删除了最初一个元素  
x = lst.pop(0)  
print x,lst     #1 [2, 3, 4, 5, 6]  删除了第一个元素  
  
#【count】  前往一个元素呈现的次数  
print lst.count(2)    #1     
  
#【extend】  扩大列表  此办法与“+”操作的没有同正在于此办法扭转原有列表,而“+”操作会孕育发生一个新列表  
lstextend = ["hello","world"]  
lst.extend(lstextend)  
print lst           #[2, 3, 4, 5, 6, 'hello', 'world']  正在lst的根底上扩大了lstextend出去   
  
#【index】  前往某个值第一次呈现的索引地位,假如未找到会抛出异样  
print lst.index("hello")  #5      
  
#print lst.index("kitty") #ValueError: 'kitty' is not in list  呈现异样  
  
  
#【remove】 移除了列表中的某个元素,假如待移除了的项没有存正在,会抛出异样  无前往值  
lst.remove("hello")  
print lst     #[2, 3, 4, 5, 6, 'world']  "hello" 被移除了  
  
#lst.remove("kitty")         #ValueError: list.remove(x): x not in list  
  
#【reverse】  意为反转 没错 就是将列表元素倒序陈列,无前往值  
print lst        #[2, 3, 4, 5, 6, 'world']  
lst.reverse()   
print lst        #[2, 3, 4, 5, 6, 'world']  
  
  
#【sort】 排序  
print lst    #因为下面的反转 今朝排序为 ['world', 6, 5, 4, 3, 2]  
lst.sort()    
print lst    #排序后  [2, 3, 4, 5, 6, 'world']  
  
nums = [10,5,4,2,3]  
print nums     #[10,5,4,2,3]  
nums.sort(compare)  
print nums     #[2, 3, 4, 5, 10]

列表转换为迭代器。

所谓的迭代器就是具备next办法(这个办法正在挪用时没有需求任何参数)的工具。正在挪用next办法时,迭代器会前往它的下一个值。假如next办法被挪用,但迭代器不值能够前往,就会诱发一个StopIteration异样。迭代器绝对于列表的劣势正在于,应用迭代器不用一次性将列表退出内存,而能够顺次拜访列表的数据。

仍然用下面的办法查看迭代器的公共办法:

lst = [1,2,3,4,5]  
lstiter = iter(lst)  
print [x for x in dir(numiter) if not x.startswith("__")]  
>>>['next']

没错,只有next一个办法,关于一个迭代器,能够这样操作:

lst = [1,2,3,4,5]  
lstiter = iter(lst)  
  
for i in range(len(lst)):  
    print lstiter.next()  #顺次打印  
    1  
    2  
    3  
    4  
    5

元组类型

元组类型以及列表同样,也是一种序列,与列表没有同的是,元组是不成修正的。元组的申明以下:

lst = (0,1,2,2,2)  
lst1=("hello",)  
lst2 = ("hello")  
print type(lst1)    #<type 'tuple'>  只有一个元素的状况下前面要加逗号 不然就是str类型  
print type(lst2)    #<type 'str'>

字典类型

字典类型是一种键值对的荟萃,相似于C#中的Dictionary<object,object>或js中的json工具。其初始化办法以下:

dict1 = {}  
print type(dict1)      #<type 'dict'>  申明一个空字典  
  
dict2 = {"name":"kitty","age":18}   #间接申明字典类型  
  
dict3 = dict([("name","kitty"),("age",18)])  #行使dict函数将列表转换成字典  
  
dict4 = dict(name='kitty',age=18)           #行使dict函数经过要害字参数转换为字典  
  
dict5 = {}.fromkeys(["name","age"])      #行使fromkeys函数将key值列表天生字典,对应的值为None   {'age': None, 'name': None}  
字典根本的操作办法:
#【增加元素】    
dict1 = {}  
dict1["mykey"] = "hello world"     #间接给一个没有存正在的键值对赋值 即时增加新元素  
  
dict1[('my','key')] = "this key is a tuple"   #字典的键能够是任何一中不成变类型,例如数字、字符串、元组等  
  
#【键值对个数】  
print len(dict1)  
  
#【反省能否含有键】  
print "mykey" in dict1         #True  反省能否含有键为mykey的键值对  
print "hello" in dict1         #False  
  
#【删除了】  
del dict1["mykey"]           #删除了键为mykey的键值对

持续行使下面的办法查看字典的一切公共办法:

>>> [x for x in dir({}) if not x.startswith("__")]  
['clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues',  
 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']  
dict.clear()                          删除了字典中一切元素  
  
dict.copy()                          前往字典(浅复制)的一个正本  
  
dict.get(key,default=None)     对字典dict 中的键key,前往它对应的值value,假如字典中没有存正在此键,则前往default 的值(留意,参数default 的默许值为None)  
  
dict.has_key(key)                 假如键(key)正在字典中存正在,前往True,不然前往False. 正在Python2.2版本引入in 以及not in 后,此办法简直已烧毁不必了,但仍提供一个 可工作的接口。  
  
dict.items()                         前往一个蕴含字典中(键, 值)对元组的列表  
  
dict.keys()                          前往一个蕴含字典中键的列表  
  
dict.values()                        前往一个蕴含字典中一切值的列表  
  
dict.iter()                            办法iteritems(), iterkeys(), itervalues()与它们对应的非迭代办法同样,没有同的是它们前往一个迭代器,而没有是一个列表。  
  
dict.pop(key[, default])         以及办法get()类似,假如字典中key 键存正在,删除了并前往dict[key],假如key 键没有存正在,且不给出default 的值,诱发KeyError 异样。  
  
dict.setdefault(key,default=None)  以及办法set()类似,假如字典中没有存正在key 键,由dict[key]=default 为它赋值。  
  
dict.setdefault(key,default=None)   以及办法set()类似,假如字典中没有存正在key 键,由dict[key]=default 为它赋值。

布尔类型

布尔类型即True以及False,以及其它言语中的布尔类型根本分歧。上面列出典型的布尔值

print bool(0)   #False  
print bool(1)   #True  
print bool(-1)  #True  
  
print bool([])  #False  
print bool(())  #False  
print bool({})  #False  
print bool('')  #False  
print bool(None) #False

保举教程:《python教程》

以上就是python数据类型有哪几种?的具体内容,更多请存眷资源魔其它相干文章!

标签: Python python教程 python编程 python使用问题

抱歉,评论功能暂时关闭!