|
Python对象的相关术语
1、Python程序中保存的所有数据都是围绕对象这个概念展开的
程序中存储的所有数据都是对象
每一个对象都有一个身份、一个类型和一个值
例如,school="GNU Linux"会以"GNU Linux"创建一个字符串对象,其身份是指向它在内存中所处位置的指针(其在内存中的地址),而school就是引用这个具体位置的名称
对象的类型也称对象的类别,用于描述对象的内部表示及它支持的方法和操作
创建特定类型的对象时,有时也将该对象称为该类型的实例
实例被创建后,其身份和类型就不可变
如对象值是可以修改的,则称为可变对象 list dict
如果对象的值不可修改,则称为不可变对象
如果某个对象包括对其它对象的引用,则将其称为容器
大多数对象都拥有大量特有的数据属性和方法
属性:与对象相关的值 对象内部可用的变量;
方法:被调用时将在对象上执行某些操作的函数
使用点(.)运算符可以访问属性和方法
class :自定义类型
类: 数据和方法
数据:变量 私有;
方法:函数;处理数据的代码段 公共
type : 类型
对象的身份与类型
1、Python内置函数id()可以返回一个对象的身份,既该对象在内存中的位置
is运算符用于比较两个对象的身份
type()用于返回一个对象的类型
对象类型本身也是一个对象,称为对象类
该对象的定义是唯一的,且对于某类型的所有实例都是相同的
所有类型对象都有一个指定的名称,可用于执行类型检查,如list、dict
两个对象的比较
1、值比较,对象的数据是否相同
2、身份比较,两个变量名是否为同一对象
3、类型比较;两个对象的类型是否一致
if a is b:
statements
if a == b:
statements
if type(a) is type(b):
statements
核心数据类型
数字: int,long,float,complex,bool
字符: str,unicode
列表: list
字典: dict
元组: tuple
文件: file
其它类型,(集合 set),frozenset,类类型None
其它文件类工具(pipes,fifos,sockets)
类型转换
str(),repr()或format():将非字符型数据转为字符
In [2]: num1 = 5.61
In [3]: type(num1)
Out[3]: float
In [4]: str(num1)
Out[4]: '5.61'
In [5]: type(num1)
Out[5]: float
In [6]: repr(num1)
Out[6]: '5.61'
In [7]: num2=repr(num1)
In [8]: type(num2)
Out[8]: str
运算符:
索引运算:
切片运算:[i:j]
扩展切片:[i:j:stride]
支持运算:
索引、切片、min()、max()、len()等
列表:容器类型
任意对象的有序集合,通过索引范文其中的元素,可变对象,支持异构;
任意嵌套;
支持原处修改:
修改指定的索引元素,或修改指定的分片,删除语句,内置方法;
l1 + l2 :合并两个列表,返回一个新的列表;不会修改原列表;
l1 * N 把l1重复N此,返回一个新列表;
成员关系判断in;用法 item in container;
In [17]: "x" in l6
Out[17]: True
In [18]: "w" in l6
Out[18]: False
l1 = []
print l1
id l1(l1)
l2 = [1,2,3,4,5]
print l2
l3 = [1,2,'b','d']
print l3
l4 = [[1,2],['a','b']]
print l4
修改列表
l2[1]=32
print l2
l2[3]='xyz'
In [22]: print l2
[1, 32, 3, 'xyz', 5]
删除列表中的元素
In [23]: l2[1:3] = []
In [24]: print l2
[1, 'xyz', 5]
del(l2[1:])
print l2
id(l2)
使用内置方法append;向列表中添加元素
l3 = [1,2,3,4,5,6]
l3.append(777)
print l3
使用内置方法append;向列表中添加列表;添置之后;在源列表中;被添加进来的列表呈现只是一个单一元素;
In [45]: l4 = ['x','b','y']
In [46]: l3.append(l4)
In [47]: print l3
[1, 2, 3, 4, 5, 6, 777, ['x', 'b', 'y']]
list.count 方法;
help(list.count)
In [3]: l3 = [1,1,1,1,2,2,2,2,2,3,3,3,4,5,6,7,8]
In [4]: l3.count(1)
Out[4]: 4
In [5]: l3.count(2)
Out[5]: 5
list.extend方法向列表中添加元素;单一元素;
In [7]: l4 = ['x','v','w']
In [8]: l3.extend(l4)
In [9]: print l3
[1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 6, 7, 8, 'x', 'v', 'w']
list.index方法; index(8)表示8在列表中第一次出现的位置;
In [12]: l3.index(8)
Out[12]: 16
In [13]: print l3
[1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 6, 7, 8, 'x', 'v', 'w']
In [14]: l3.index('x')
Out[14]: 17
help list.insert
list.insert 方法;
l4.insert(2,3333)
print l4
l4.insert(1,3333)
print l4
['x', 3333, 'v', 3333, 'w']
l4.insert(0,222)
print l4
[222, 'x', 3333, 'v', 3333, 'w']
list.insert 方法将列表中的数据元素弹出;
In [25]: print l4
[222, 'x', 3333, 'v', 3333, 'w']
In [26]: l4.pop(0)
Out[26]: 222
In [27]: l4.pop()
Out[27]: 'w'
In [28]: print l4
['x', 3333, 'v', 3333]
list.remove方法将列表中的数据元素去除;
In [29]: print l4
['x', 3333, 'v', 3333]
In [31]: l4.remove(3333)
In [32]: print l4
['x', 'v', 3333]
list.reverse() 方法;将列表中的数据元素原地翻转:
print l4
['x', 3333, 'v', 3333]
In [33]: l4.reverse()
In [34]: print l4
[3333, 'v', 'x']
list.sort 方法
In [1]: l5 = [1,4,6,12,2,3,51,34]
In [2]: print l5
[1, 4, 6, 12, 2, 3, 51, 34]
In [3]: l5.sort()
In [4]: print l5
[1, 2, 3, 4, 6, 12, 34, 51]
列表相加+ 操作 :合并两个列表;返回一个新的列表;不会修改原列表;
In [7]: id(l5)
Out[7]: 28502784
In [8]: id(l4)
Out[8]: 28522688
In [9]: l5 + l4
Out[9]: [1, 2, 3, 4, 6, 12, 34, 51, 'x', 'y', 'z', 'n']
In [10]: l6 = l4 + l5
In [11]: print l6
['x', 'y', 'z', 'n', 1, 2, 3, 4, 6, 12, 34, 51]
In [12]: id(l6)
Out[12]: 28502496
字符串相加操作;
In [13]: str1 = "Hello"
In [14]: str2 = "World"
In [15]: str1 + str2
Out[15]: 'HelloWorld'
将下标为1之后的数据元素更换成下面这个列表;
In [22]: l6[1:] = [11111,22222]
In [24]: print l6
['x', 11111, 22222]
使用range生成一个列表
In [26]: xrange(10)
Out[26]: xrange(10)
In [27]: range(10)
Out[27]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
列表复制其实有3种方法
1、指向内存中的内存对象为同一个;
In [28]: l5 = l6
In [29]: id(l6)
Out[29]: 28502496
In [30]: id(l5)
Out[30]: 28502496
In [31]: print l6
['x', 11111, 22222]
In [32]: l6.append('asdasd')
In [33]: print l6
['x', 11111, 22222, 'asdasd']
In [34]: print l5
['x', 11111, 22222, 'asdasd']
2、列表赋值;指向不同的内存对象;内存对象复制;
In [35]: l4 = l6[:]
In [36]: l6.remove('x')
In [37]: print l6
[11111, 22222, 'asdasd']
In [38]: print l4
['x', 11111, 22222, 'asdasd']
3、列表复制
In [41]: import copy
In [42]: l5 = copy.deepcopy(l4)
In [44]: id(l5)
Out[44]: 29463760
In [39]: id(l4)
Out[39]: 29463112
In [45]: print l5
['x', 11111, 22222, 'asdasd']
In [46]: print l4
['x', 11111, 22222, 'asdasd']
|
|