Python 序列之列表
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 : num1 = 5.61
In : type(num1)
Out: float
In : str(num1)
Out: '5.61'
In : type(num1)
Out: float
In : repr(num1)
Out: '5.61'
In : num2=repr(num1)
In : type(num2)
Out: str
运算符:
索引运算:
切片运算:
扩展切片:
支持运算:
索引、切片、min()、max()、len()等
列表:容器类型
任意对象的有序集合,通过索引范文其中的元素,可变对象,支持异构;
任意嵌套;
支持原处修改:
修改指定的索引元素,或修改指定的分片,删除语句,内置方法;
l1 + l2 :合并两个列表,返回一个新的列表;不会修改原列表;
l1 * N 把l1重复N此,返回一个新列表;
成员关系判断in;用法 item in container;
In : "x" in l6
Out: True
In : "w" in l6
Out: False
l1 = []
print l1
id l1(l1)
l2 =
print l2
l3 =
print l3
l4 = [,['a','b']]
print l4
修改列表
l2=32
print l2
l2='xyz'
In : print l2
删除列表中的元素
In : l2 = []
In : print l2
del(l2)
print l2
id(l2)
使用内置方法append;向列表中添加元素
l3 =
l3.append(777)
print l3
使用内置方法append;向列表中添加列表;添置之后;在源列表中;被添加进来的列表呈现只是一个单一元素;
In : l4 = ['x','b','y']
In : l3.append(l4)
In : print l3
]
list.count 方法;
help(list.count)
In : l3 =
In : l3.count(1)
Out: 4
In : l3.count(2)
Out: 5
list.extend方法向列表中添加元素;单一元素;
In : l4 = ['x','v','w']
In : l3.extend(l4)
In : print l3
list.index方法; index(8)表示8在列表中第一次出现的位置;
In : l3.index(8)
Out: 16
In : print l3
In : l3.index('x')
Out: 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
list.insert 方法将列表中的数据元素弹出;
In : print l4
In : l4.pop(0)
Out: 222
In : l4.pop()
Out: 'w'
In : print l4
['x', 3333, 'v', 3333]
list.remove方法将列表中的数据元素去除;
In : print l4
['x', 3333, 'v', 3333]
In : l4.remove(3333)
In : print l4
['x', 'v', 3333]
list.reverse() 方法;将列表中的数据元素原地翻转:
print l4
['x', 3333, 'v', 3333]
In : l4.reverse()
In : print l4
list.sort 方法
In : l5 =
In : print l5
In : l5.sort()
In : print l5
列表相加+ 操作 :合并两个列表;返回一个新的列表;不会修改原列表;
In : id(l5)
Out: 28502784
In : id(l4)
Out: 28522688
In : l5 + l4
Out:
In : l6 = l4 + l5
In : print l6
['x', 'y', 'z', 'n', 1, 2, 3, 4, 6, 12, 34, 51]
In : id(l6)
Out: 28502496
字符串相加操作;
In : str1 = "Hello"
In : str2 = "World"
In : str1 + str2
Out: 'HelloWorld'
将下标为1之后的数据元素更换成下面这个列表;
In : l6 =
In : print l6
['x', 11111, 22222]
使用range生成一个列表
In : xrange(10)
Out: xrange(10)
In : range(10)
Out:
列表复制其实有3种方法
1、指向内存中的内存对象为同一个;
In : l5 = l6
In : id(l6)
Out: 28502496
In : id(l5)
Out: 28502496
In : print l6
['x', 11111, 22222]
In : l6.append('asdasd')
In : print l6
['x', 11111, 22222, 'asdasd']
In : print l5
['x', 11111, 22222, 'asdasd']
2、列表赋值;指向不同的内存对象;内存对象复制;
In : l4 = l6[:]
In : l6.remove('x')
In : print l6
In : print l4
['x', 11111, 22222, 'asdasd']
3、列表复制
In : import copy
In : l5 = copy.deepcopy(l4)
In : id(l5)
Out: 29463760
In : id(l4)
Out: 29463112
In : print l5
['x', 11111, 22222, 'asdasd']
In : print l4
['x', 11111, 22222, 'asdasd']
页:
[1]