Index ¦ Archives ¦ Atom

Python数据类型

变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。

基于变量的数据类型,解释器会分配制定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。


变量赋值

Python中的变量赋值不需要声明类型。

每个变量在内存中的创建,都包括变量的标识,名称和数据这些信息。

每个变量在使用前都必须赋值,变量赋值以后才会被创建。

= 用来给变量赋值,= 运算符左边是变量名,右边是存储在变量中的值,例如:

1
2
3
4
5
6
#!/usr/bin/python
#-*- coding:UTF-8 -*-

counter = 100 #整形变量赋值
pi = 3.14     #浮点型变量赋值
name = "张三"  #字符型变量赋值 

多个变量赋值

Python允许你同时为多个相同类型变量赋同一个值:

a = b =c = 1

你也可以为多个不同类型变量赋多个值:

a, b ,c = 1, 3.14, "张三"


Python标准数据类型

在内存中存储的数据可以有多种类型,Python定义了一些标准类型,用于存储各种类型的数据。

Python有五个标准数据类型:

  • Numbers(数字)
  • String (字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

  • Python数字

Python支持四种不同的数字类型:

  • int (整型)

  • long (长整型|也可以代表八进制和十六进制)

    长整型也可以用小写“L”,但是还是建议使用大写“L",避免与数字1混淆

  • float (浮点型)

  • complex (复数)

    复数由实数部分和虚数部分组成,可以用a+bj,或者complex(a, b)表示,复数的实数部a和虚数部bj都是浮点型

  • Python字符串

字符串或串(String)是由数字,字母,下划线组成的一串字符,它是编程语言中表示文本的数据类型

Python的字符串列表有2种取值顺序:

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

  • 从右到左索引默认从-1开始,最大范围是字符串开头

###### 字符串的截取、连接和重复操作

变量名[头下标:尾下标]

标识从变量中截取从头下标到尾下标(包括头下标不包含尾下标)之间的字符,示例:

s = 'ohelloworld!'

s[1:5]的结果为hello

+加号运算符用于字符串连接运算;*星号运算符用于重复操作,示例:

``` #!/usr/bin/python #-- coding: UTF-8 --

str = 'Hello World!'

print str #输出完整字符串 print str[0] #输出字符串中的第一个字符 print str[2:5] #输出字符串中第三个至第五个之间的字符串 print str[2:] #输出从第三个字符开始的字符串 print str * 2 #输出字符串2次 print str + "TEST" #输出连接的字符串 ```

以上示例输出结果:

Hello World! H llo llo World! Hello World!Hello World! Hello World!TEST

  1. Python列表

List(列表)是Python中使用最频繁的数据类型。

List可以完成大多数集合类的数据结构实现。它支持字符、数字、字符串甚至可以抱汗列表(即嵌套)。

列表用[]标识,是Python最通用的复合数据类型

###### 列表的截取、连接和重复操作

变量名[头下标:尾下标]

标识从变量中截取从头下标到尾下标(包括头下标不包含尾下标)之间的内容

+加号运算符用于列表连接运算;*星号运算符用于重复操作,示例:

``` #!/usr/bin/python #-- coding: UTF-8 --

list = ['jack', '123', '3.14', 'rose', '70.2'] tinylist = [123, 'rose']

print list # 输出完整列表 print list[0] # 输出列表的第一个元素 print list[1:3] # 输出列表的第二个至第三个元素 print list[2:] # 输出列表从第二个开始至末尾的所有元素 print tinylist * 2 # 输出列表两次 print list + tinylist # 输出组合的列表 ```

以上示例输出结果:

['jack', '123', '3.14', 'rose', '70.2'] jack ['123', '3.14'] ['3.14', 'rose', '70.2'] [123, 'rose',123, 'rose'] ['jack', '123', '3.14', 'rose', '70.2', 123, 'rose']

  1. Python元组

元组用()标识,内部元素用逗号隔开。元组不能二次赋值,相当于只读列表。

元组也可以进行切片,连接等操作:

``` #!/usr/bin/python # -- coding: UTF-8 --

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 ) tinytuple = (123, 'john')

print tuple # 输出完整元组 print tuple[0] # 输出元组的第一个元素 print tuple[1:3] # 输出第二个至第三个的元素 print tuple[2:] # 输出从第三个开始至列表末尾的所有元素 print tinytuple * 2 # 输出元组两次 print tuple + tinytuple # 打印组合的元组 ```

以上示例输出结果:

('runoob', 786, 2.23, 'john', 70.2) runoob (786, 2.23) (2.23, 'john', 70.2) (123, 'john', 123, 'john') ('runoob', 786, 2.23, 'john', 70.2, 123, 'john')

元组不允许重新赋值操作,而列表是允许重新赋值的:

``` #!/usr/bin/python # -- coding: UTF-8 --

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 ) list = [ 'runoob', 786 , 2.23, 'john', 70.2 ] tuple[2] = 1000 # 元组中重新赋值是非法的 list[2] = 1000 # 列表中是合法的 ```

  1. Python字典

字典dictionary是除list列表外Python中最灵活的内置数据结构类型。

列表list有序的对象集合,字典dictionary无序的对象合集,两者之间的区别在于:字典中的元素是通过键值对来存取的,而不是通过偏移存取。

字典dictionary用{}标识,字典由索引key和对应的值value组成。示例:

``` #!/usr/bin/python #-- coding:UTF-8 --

dict = {} dict['one'] = "This is one" dict[2] = "This is two"

tinydict = {'name': 'jack', 'code':1000, 'dept':'sales'}

print dict['one'] # 输出键值为’one‘的值 print dict[2] # 输出键值为2 的值 print tinydict # 输出完整的字典tinydict print tinydict.key() # 输出所有的键值key print tinydict.values() # 输出所有的值values ```

输出结果为:

This is one this is two {'dept': 'sales', 'code': 6734, 'name': 'jack'} ['dept', 'code', 'name'] ['sales', 1000, 'jack']

  1. Python数据类型转换

数据类型的转换只需要将数据类型作为函数名即可。

以下几个内置函数可以执行数据类型之间的转换,这些函数返回一个新的对象,标识转换的值:

描述 函数
将x转换为一个整数 int(x)
将x转换为一个长整数 long(x)
将x转换为一个浮点数 float(x)
创建一个复数 complex(real,imag)
将对象x转换为字符串 str(x)
将对象x转换为表达式字符串 repr(x)
用来计算在字符串中的有效python表达式,并返回一个对象 eval(str)
将序列s转换为一个元组 tuple(s)
将序列s转换为一个列表 list(s)
转换为可变集合 set(s)
创建一个字典,d必须是一个序列(key,value)元组 dict(d)
转换为不可变集合 frozenset(s)
将一个整数转换为一个字符 chr(x)
将一个整数转换为unicode字符 unichr(x)
将一个字符转换为它的整数值 ord(x)
将一个整数转换为一个十六进制字符串 hex(x)
将一个整数转换为一个八进制字符串 oct(x)
  1. 其他问题

Python的所有数据类型都是类,可以通过函数type()来查看该变量的数据类型

```

n=1 type(n) n="runoob" type(n)

```

此处还可以用isinstance()函数来判断:

a = 111 isinstance(a, int) True

isinstance()和type()的区别在于:

``` class A: pass

class B(A): pass

isinstance(A(), A) # returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False ```

type()不会认为子类是一种父类类型。 isinstance()会认为子类是一种父类类型。

© Ivesein. Built using Pelican. Theme by Giulio Fidente on github.