首页 > 代码库 > Python基础之二:数据类型

Python基础之二:数据类型

四、Python数据类型

数字

字符串

列表

元祖

字典

1.数字类型

         整型

                   表示范围:-21474836482147483647,超过该范围的会被当作长整型

                   示例:num=123

                              type(num)—返回<type ‘int‘>,用来测试变量的类型

         长整型

                   表示范围:任意大整数,后跟Ll与整型区别

                   示例:num=1l

                              type(num)—返回<type ‘long‘>

         浮点型

                   示例:num=12.0

                              type(num) —返回<type‘float‘>

         复数型

                   示例:num=3.14jj表示虚部)

                              type(num) —返回<type‘complex‘>

2.字符串类型

         字符型:使用引号定义的一组可以包含数字,字母,符号的集合

                   定义方式:

                            strval=’helloworld!’

                            strval=”helloworld!”

                            strval=”””helloworld!”””

                            type(strval)—返回<type ‘str‘>

                   注:单引号,双引号在本例中区别不大,但是要注意这样的情况,若字符串中本身有单引号,则需要使用双引号来定义,例如:str1=”let’s go”,如果字符串中有双引号,则可以使用转义符“\”,例如str2=”let’s  \“go\””

                   三重引号的用法:用来控制字符格式化输出(也可以用来注释)

                  

>>>mail="""Hi Tom:
...             I am jack
...             goodbye
... """
>>> print mail
Hi Tom:
                I am jack
                goodbye
 
>>>

         字符串的取值(索引取值)

                   字符串,元组和列表都是序列类型数据

                   例如:定义a=’abcde’,字符串中每一个字母都有自己的存储空间,可以单独地将他们取出来:

                  

>>>a=‘abcde‘
>>> a[0]
‘a‘
>>> a[1]
‘b‘
>>> a[2]
‘c‘
>>> a[3]
‘d‘
>>> a[4]
‘e‘

同时取两个:

                  

>>>a[0]+a[1]
‘ab‘

         字符串的切片:str[开始序号:终止序号],取开始序号至终止序号之前的字符

                   仍然定义a=’abcde’,现在要截取其中连续字符:

                            截取‘bcd’:a[1:4],表示从a[1]-a[4]之前的字符,注意,不包括    a[4]

                            截取‘abcd’:a[:4],不写开始序号则表示,从序号0开始

                   仍然定义a=’abcde’,现在要隔空截取其中字符:

                            截取‘ace’:a[::2],表示取a[0]a[2]a[4]2为步长

                   仍然定义a=’abcde’,现在要从右向左截取其中连续字符:

                            截取‘bcd’:a[-4:-1],仍然不包含a[-1]

3.序列

         列表,元组和字符串都是序列

         序列的的主要特点是索引操作符和切片操作符

                   索引操作符可从序列中抓取一个特定字符

                   切片操作符可以获取序列的一个切片(部分序列)

         序列的基本操作:

                   len():求序列长度

                           

>>>str="abcde"
>>> len(str)
5

                   +:连接两个序列

                         

>>>str="abcde"
>>> str2="12345"
>>> str+str2
‘abcde12345‘

                   *:重复序列元素

                           

>>>str2="12345"
>>> str2*5
‘1234512345123451234512345‘

                   in:判断元素是否在序列中

                           

>>>str=‘abcde‘
>>> ‘c‘ in str

True(正确返回True,错误返回False

                   max():返回最大值

                           

>>>str2=‘123456‘
>>> max(str2)
‘6‘

                   min():返回最小值

                           

>>>str2=‘123456‘
>>> min(str2)
‘1‘

                   cmp(tuple1tuple2):比较2个的序列值是否相同

                           

>>>str1=‘abcde‘
>>> str2=‘12345‘
>>> cmp(str1,str2)
1
>>> str1=‘1‘
>>> cmp(str1,str2)
-1
>>> str1=‘12345‘
>>> str2
‘12345‘
>>> cmp(str1,str2)
0

4.元组

         元组和列表类似,和字符串一样是不可变的

                   元组通过小括号中用逗号分割的项目定义

                   元组的值不会改变(整体修改后即变成另外一个元组)

         先来看这样一个例子:

                  假设:userinfo=”jack 30male”,我们要把其中的名字“jack”取出来,可以使用切片的方式,userinfo[:4],又定义userinfo1=”liu 25 female”,使用同样的切片方式userinfo1[:4]取出来的是“liu ”,还包含空格,不精确,或者也可以使用userinfo1[:3],但这样一来,针对不同长度的字符串,无法做到用同一种切片格式来获取,这样,我们就需要借用元组来实现了。

                   元组的定义:使用小括号,元素之间用“,”隔开,内容可以为空

                           

>>>t=("jack",30,"male")
>>> t[0]
‘jack‘

                   即小括号中每一个用逗号隔开的字符串被当作一个字符,可以使用索引或切片的方式将其取出

                   注意:如果元组中只有一个元素,也要使用“,”分开

                           

>>>t2=(2,)                 //不要忘记“,”否则会被当作整型
>>> type(t2)
<type ‘tuple‘>

                   元组的拆分:使用对应数量的变量接收元组中对应元素的值

                           

>>>t=("jack",30,"male")
>>> name,age,gender=t
>>> name
‘jack‘
>>> age
30
>>> gender
‘male‘

5.列表

         列表是处理一组有序项目的数据结构,即可在一个列表中存储一个序列的项目

         列表是可变类型的数据

         列表的组成:用[]表示列表,包含多个以逗号分割开的数字,或字符串

                  

List=[‘Tom’,’Jerry’,’Mary’]
List=[1,2,3,4,5]
List=[“str1”,“str2”, “str3”, “str4”, “str5”, “str6”]

         列表的操作

                   取值:

                            切片或索引

                            list[]

                   添加:

                            list.append()

                                   

>>>listtest
[‘Jerry‘, 30, ‘male‘]
>>> listtest.append("1234567")
>>> listtest
[‘Jerry‘, 30, ‘male‘, ‘1234567‘]

                   删除:

                            del(list[])

                                     [‘Jerry‘,30, ‘male‘]

>>> del(listtest[1])
>>> listtest
[‘Jerry‘, ‘male‘]
list.remove(list[])
>>>listtest
[‘Jerry‘, 30, ‘male‘, ‘1234567‘]
>>> listtest.remove(‘1234567‘)
>>> listtest
[‘Jerry‘, 30, ‘male‘]

                   修改:内存空间不会变

                            list[]=x

                                    

>>>listtest=[‘tom‘,30,‘male‘]
>>> listtest[0]
‘tom‘
>>> listtest[0]=‘Jerry‘
>>> listtest
[‘Jerry‘, 30, ‘male‘]

                   查找

                            var in list

 

6.字典

         字典是python中唯一的映射类型(哈希表)

         字典的对象是可变的,但是字典的键必须使用不可变对象,并且一个字典中可以使用不同类型的键值。

         keys()或者value()返回键列表或者值列表

         items()返回包含键值对的元组

         创建字典

                   {}:最常用的方法

                           

>>>dict={‘name‘:‘tom‘,‘age‘:25,‘gender‘:‘male‘}
>>> dict
{‘gender‘: ‘male‘, ‘age‘: 25, ‘name‘: ‘tom‘}

                   使用工厂方法dict()

                            例:fdict=dict([‘x’,1],[‘y’,2])

                   内建方法:fromkeys(),字典中的元素具有相同的值,默认为None

                            例:ddict={}.fromkeys((‘x’,’y’),-1)

         访问字典

                   直接使用key访问:key不存在会报错,可以使用has_key()或者innot in判断,但是had_key()方法即将废弃。

                   循环遍历:

                            例:for key indict1.keys()

                   使用迭代器:

for key in dict1

         更新和删除:

                   直接用键值访问更新;内建的update()方法可以将整个字典的内容拷贝到另一个字典中。

                           

>>>dict={‘name‘:‘tom‘,‘age‘:25,‘gender‘:‘male‘}
>>> dict
{‘gender‘: ‘male‘, ‘age‘: 25, ‘name‘: ‘tom‘}
>>> dict[‘tel‘]=‘12345678‘        //新增一个key取名为’tel’,赋值为’12345678’
>>> dict
{‘gender‘: ‘male‘, ‘age‘: 25, ‘tel‘: ‘12345678‘, ‘name‘: ‘tom‘}
>>> dict[‘tel‘]=‘88888888‘        //修改’tel’的值为’88888888’
>>> dict
{‘gender‘: ‘male‘, ‘age‘: 25, ‘tel‘: ‘88888888‘, ‘name‘: ‘tom‘}

                   注意:字典中元素排列是无序的,取值与key有关

                   deldict1[‘a’]删除字典中键值为a的元素

                                    

>>>del(dict[‘tel‘])
>>> dict
{‘gender‘: ‘male‘, ‘age‘: 25, ‘name‘: ‘tom‘}

                            dict1.pop(‘a’)删除并且返回键为’a’的元素

                                    

>>>dict.pop(‘age‘)
25                                 //返回age的值,并将’age’这个key和对应值删除
>>> dict
{‘gender‘: ‘male‘, ‘name‘: ‘tom‘}

                            dict1.clear()删除字典所有元素

                                    

>>>dict.clear()
>>> dict
{}                                //字典内容被全部清空


                            deldict1删除整个字典

         字典相关内建函数:

                type()str()cmp()cmp很少用于字典的比较,比较依次是字典的大小、键、值)

         工厂函数dict()

                dict(zip(‘x’,’y’),(1,2))或者dict(x=1,y=2)

                使用字典生成字典比用copy慢,推荐使用copy()

         字典中方法总结

            len()hash()(用于判断某个对象是否可以做一个字典的键值,非哈希类型报 TypeError错误)。

                   dict.clear():删除字典中的所有元素。

                  dict.get(key,default=None):返回keyvalue,如果改键不存在则返回default指定的值。

                   dict.fromkeys(seq.val=None):以seq中的元素为键创建并返回一个字典,val为指定的默认值。

                   dict.has_key(key)判断字典中是否存在key,建议使用innot in代替。

                   dict.items():返回键值对元组的列表。

                   dict.keys():返回字典中键的列表。

                   dict.iter*()itertems()iterkeys()itervalues()返回迭代值而不是列表。

                   dict.pop(key[,default]):同get(),区别是若key存在,删除并返回dict[key],若不存在且未指定default值,则提示KeyError异常。

                   dict.setdefault(key,default=None):同set(),若key存在则返回其value,不存在则dict[key]=default

                   dict.uppdate(dict2):将dict2中的键值对添加到字典dict中,如果有重复覆盖,原字典不存在的条目将被添加进来。

                   dict.values():返回字典中所有值的列表。