您的位置:首页 > 编程语言 > Python开发

Python数据类型之数字类型、字符串类型

2015-06-22 22:38 786 查看
Python数据类型之数字类型、字符串类型
在讲Python基本数据类型前,我们先来看一下Python中有3个基本函数,对我们以后的学习会有很大的帮助。

type()

判断类型的方法

>>> a = 1
>>> type(a)
<type 'int'>
>>> list1 = []
>>> st = 'sdf'
>>> type(st)
<type 'str'>
>>> type(list1)
<type 'list'>
dir()

列出某个类型或模块中所有的方法,参数可以是类型type或类型的对象!

实例:

列出字符串数据类型所有的方法

>>> str1 = 'ad'
>>> dir(str1) 或 dir("")
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__
format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get
slice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mo
d__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
'__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook
__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center',
'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index
', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper',
'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', '
rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', '
strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
列出列表类型所有的方法
>>> list1 = []
>>> dir(list1) 或 dir([])
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delsli
ce__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getit
em__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__',
'__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__r
educe__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__'
, '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'a
ppend', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'
]
对于列出的这些方法中,我们主要关注的就是没有用下划线定义的方法。

help()

help函数是python的一个内置函数,无需import,任何时候都可以直接被使用。

在使用python来编写代码时,会经常使用python自带函数或模块,但是有时候会对一些函数或是模块的用途不是很清楚,这时候就可以使用help函数来查看帮助。

这里要注意下,help()函数是查看函数或模块用途的详细说明,而dir()函数是查看函数或模块内的操作方法都有什么,输出的是方法列表。

实例:

查看dir函数的具体用法

>>> help(dir)
Help on built-in function dir in module __builtin__:

dir(...)
dir([object]) -> list of strings

If called without an argument, return the names in the current scope.
Else, return an alphabetized list of names comprising (some of) the attribut
es
of the given object, and of attributes reachable from it.
If the object supplies a method named __dir__, it will be used; otherwise
the default dir() logic is used and returns:
for a module object: the module's attributes.
for a class object:  its attributes, and recursively the attributes
of its bases.
for any other object: its attributes, its class's attributes, and
recursively the attributes of its class's base classes.
查看list模块中count函数的用法

>>> help(list.count)
Help on method_descriptor:

count(...)
L.count(value) -> integer -- return number of occurrences of value
查看字符串模块中的index函数的用法

>>> str1 = 'asd'
>>> help(str1.index)
Help on built-in function index:

index(...)
S.index(sub [,start [,end]]) -> int

Like S.find() but raise ValueError when the substring is not found.


1、 数字类型

python中数字类型有分为如下几种类型:

整型 - int
长整型 - long
浮点型 - float
复数型 - complex

Python是一种弱类型语言,所以变量都是不需要提前声明,可以直接拿来使用。

1)整型int表示的范围是-2147483648到2147483647,如12,600,-120等。

int范围的示例:

>>>num = 567
>>>print num
567
>>>type(num)  #查看num的数据类型
<type'int'>
#当num变量的值超过int能表示的范围后,num的数据类型就自动被切换成长整形。
>>>num = 1234567891234567897890678956789
>>>type(num)
<type'long'>
#直接定义一个长整形,后面要以L或l标示
>>>num1 = 123L
>>>type(num1)
<type'long'>


2)浮点型

比如:1.2, 12342.56, 0.0等。

变量在定义赋值时,只要给赋值小数,该变量就被定义成浮点型。

>>>type(f)
<type'float'>
>>>f / 2
6.25


3)复数类型

Python对复数提供内嵌支持,这也是python的亮点。如1.26j,8.1e-21j

Python中复数的虚部用字母j表示。示例如下:

>>>cc = 1.56j
>>>type(cc)
<type'complex'>

Python的复数类型可以用在抛物线的计算中。

2、字符串String

字符串是由数字、字母、下划线组成的一串字符。

字符串的字符串的定义:

#普通字符串的定义
>>> s1 = 'adf\nsd'
>>> print s1
adf
sd
>>> type(s1)
<type 'str'>

#原生字符串的定义
>>> s2 = r'asd\n23'
>>> print s2
asd\n23
>>> type(s2)
<type 'str'>

#Unicode字符串的定义(只需在定义字符串时前面加一个字母 u)
>>> s3 = u'aer23'
>>> print s3
aer23
>>> type(s3)
<type 'unicode'>


原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。原始字符串除在字符串的第一个引号前加上字母“ r ”(不区分大小写)以外,与普通字符串有着几乎完全相同的语法。

python接收单引号(')、双引号(")、三引号(''' / """)来表示字符串,引号的开始与结束类型必须一致,也就是说前面是单引号,后面也必须是单引号。其中三引号可以由多行组成,这也是编写多行文本的常用语法,经常用于处理文档字符串,但在文件的特定地点,会被当做注释来处理。示例如下:

>>>str = "This is the first python program!"
>>>print str
Thisis the first python program!
>>>type(str)
<type'str'>
>>>str1 = 'first'
>>>type(str1)
<type'str'>
>>>str2 = '''三引号'''
>>>print str2
三引号
>>>type(str2)
<type'str'>

但会出现这种情况,字符串中本身就含有单引号或者双引号或者三引号时,那么我们定义字符串的时候,就必须避免使用跟字符串本身一样的引号类型来定义字符变量,或者用反斜杠(\)将字符串中的引号进行转义,否则就会报错。示例如下:

>>>st = "this is 'ss'"
>>>print st
thisis 'ss'
>>>st1 = 'this is "bb"'
>>>print st1
thisis "bb"
>>>st2 = "this is \"cc\""
>>>print st2
thisis "cc"
#当我们想进行换行打印时,又该怎么做呢?
>>>st2 = "this\nis\ncc"
>>>print st2
this
is
cc


在定义变量时,在字符串中间加一换行符(\n),print在打印时,加了\n处就会被折行打印。但是这样的格式打印,有时候编写起来会比较费劲,此时我们的三引号就派上用场了。如:

>>>st3 = ''' this
...             is
...             the
...             last
...   one
...'''
>>>print st3
this
is
the
last
one


看到打印的结果了吗?查看一下st3变量的内容

>>>st3
'this \n\t\tis \n\t\tthe\n\t\tlast\n one\n'


它会自动在字符串中记录我们编写的格式,并添加相应的表示格式的符号。

字符串、列表、元组都被称为序列类型的数据。什么叫序列类型的数据呢?后续将会介绍。

作为一个字符串,其实它里面的每一个字符都有自己独立的空间,那就是说我们可以直接取出单个的字母或者某一个子串。每一个字母都会有一个相应的索引(所谓索引就是指向该字母存放空间的地址,这个值是唯一的),并且这个索引值是从0开始的,类似于java语言中的数组。

#取单个的字符
>>>str = "abcdefg"
>>>str[0]  #输出字符串中的第一个字符
'a'
>>>str[1]  #输出字符串中的第二个字符
'b'

python的字符串还支持一次取多个字符,这就涉及到从字符串列表中取值顺序的问题了,常见的有两种取值顺序:

1、从左到右取,最大范围是字符串的长度减1,默认的索引从0开始。

2、从右到左取,最大的范围字符串开头,默认索引从-1开始。

取子串时,可以通过[头下标:尾下标],就可以截取相应的字符串(也叫字符串的切片),下标可以为整数或负数,可以为空表示取到头或尾(注:这种取法只包括左边界,不包括右边界)。比如:

>>>str = "abcdefg"
>>>len(str)  #计算一下字符串的长度
7
>>>str[2:4]  #取下标为2到4但不包括下标为4的子串
'cd'
>>>str[1:]  #从下标1开始取到尾
'bcdefg'
>>>str[:5]  #从开头,也就是下标为0开始,取到下标为5的子串,但不包括5
'abcde'
>>>str[::2]  #从头开始到结尾以步长为2开始取值
'aceg'
>>>str[-1]  #取最后一个字符
'g'
>>>str[-4:-2] #从倒数第4个开始取到倒数第2个,但不包括倒数第二个位置的元素
'de'
>>>str[-4:-2:1] #从左往右,-4开始以步长为1取到-2,,最后一个数的正负是来控制方向的
'de'
>>>str[-2:-5:-1]  #从右往左,-2开始以步长为1取到-5,,最后一个数的正负是来控制方向的
'fed'
加号(+)是字符串的连接运算符,星号(*)是重复操作。比如:


>>>str = "abcdefg"
>>>print str * 2  #将字符串输出两次
abcdefgabcdefg
>>>print str[2] + str[0]  #输出连接后的字符串
ca
>>>print str + "python"  #输出连接后的字符串
abcdefgpython


数据类型转换

float():变浮点型
>>> float('12')
12.0
int():变成整型
>>> int(1.6)
1
int(str,base) :变成base进制整型数
>>> int('11',2)
3
long(str) :变成长整型
>>> long(123)
123L
>>> long('123')
123L

long(str,base) :变成base进制长整型
>>> long('23',8)
19L
<pre name="code" class="python">tuple(s) :将序列 s 转换成一个元组
>>> s = 'asdf'
>>> tuple(s)
('a', 's', 'd', 'f')
>>> list1 = [1,2,3]
>>> tuple(list1)
(1, 2, 3)


<pre name="code" class="python">list(seq):将序列seq转换成一个列表
>>> s = 'asdf'
>>> list(s)
['a', 's', 'd', 'f']
>>> tuple1 = (1,2,3)
>>> list(tuple1)
[1, 2, 3]


<pre name="code" class="python">dict(seq):创建一个字典,seq必须是一个序列(key,value)元组。
>>> list1 = [(1,2),(2,3)]
>>> dict(list1)
{1: 2, 2: 3}


字符串的格式化(注意其转义字符,大多如C语言的)
str_format % (参数列表) :参数列表是以tuple的形式定义的,即不可运行中改变
>>> num = 'aa'
>>> print "this is %s" %(num)
this is aa

Python字符串格式化符号:

%c格式化字符及其ASCII码
%s格式化字符串
%d格式化整数
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
%f格式化浮点数,可指定小数点后的位数
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f 和%e的简写
%G%f 和 %E的简写
%p用十六进制数格式化变量的地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: