列表:
1、对序列操作包括:索引,切片,加,乘,检查成员。
2、list、tuple、增删改查、多个变量赋值
list:
range()函数还有个步长的概念
切片:
切片的目的是,从列表中一次获取多个元素,通过索引取
使用方式:list[index:index]和tuple[index:index]
切片的作用范围:list和tuple和字符串,能用切片的必须要有下标
切片后返回的是一个list
列表生成式:
目的:快速生成list
列表生成式的使用方式: [代码块 for循环 if判断] 结果=只取为True的结果
使用范围:只要适合迭代的就适合列表生成式,能用for循环的地方就能用列表生成式,比如适合list和dict
生成器:
这种一边循环一边计算的机制,称为生成器(Generator)。
方法一:
>>> g = (x * x for x in range(10))
>>> for n in g:
... print(n)
方法二:
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
如果一个函数定义中包含yield关键字,那么这个函数就是一个generator:
这里,最难理解的就是generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。
而变成generator的函数,在每次调用next()的时行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
迭代:
迭代的概念:迭代就是遍历
目的:遍历迭代对象的所有元素
使用方式:for...in 迭代对象
使用范围:只要是迭代对象就能迭代
python中的迭代对象有以下几个:
list、tuple、dict、String、generator
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身
>>> for i, value in enumerate(['A', 'B', 'C']):
... print i, value
list:有序列表
list集合中的数据类型可以不同
len()集合长度,集合长度就是元素个数
记得最后一个元素的索引是len(classmates) - 1
sample:
className.append('Adma')-- 增
className.insert(1,'jj')---------增
className.pop(1)--------------删,删除最后一个元素,
也可以传入索引,根据索引删除
del lt[1]---------------删,del根据索引来删除
remove()--------------删,根据名字来删除
className[1]='zhangll'--------改
l=['Apple',1,True]
list集合中也可以是另一个list
s = ['python', 'java', ['asp', 'php'], 'scheme']
取元素:s[2][1]
append()和extend()区别,append只增加一个元素,一个位置;extend增加多个元素,多个位置
对列表通常有2中处理:
查找元素是否在列表中
查找元素在列表的那个位置,列表中的那个位置就是索引index
查找元素是否在列表中
if 'c' in lt:用in关键字
index+1=位置,位置-1=索引
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表
len([1, 2, 3]) 3 长度
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复
3 in [1, 2, 3] True 元素是否存在于列表中
for x in [1, 2, 3]: print x, 1 2 3 迭代
tuple:也是有序列表
tuple没有增删改功能,tuple一旦初始化就不能修改
因为tuple不能变,所以能用tuple代替list的,尽量用tuple
tuple所谓的不变是指它中的每个元素指向永远不变
定义空的tuple
t=()
定义一个只有1个元素的tuple
t=(1,)
不能用t=(1)
因为()有2中含义,即可表示tuple,也可表示数学公式的中的小括号,产生歧义。因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。所以只有1个元素的tuple定义时必须加一个逗号,来消除歧义。
“可变的”tuple,本质是tuple中的元素有个list
()集合就是tuple,[]集合就是list
del tup 删除tuple
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组
len((1, 2, 3)) 3 计算元素个数
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制
3 in (1, 2, 3) True 元素是否存在
for x in (1, 2, 3): print x, 1 2 3 迭代
任意无符号的对象,以逗号隔开,默认为元组
print "Value of x , y : ", x,y;
元组与列表的区别,元组它的关键是不可变性。
如果在程序中以列表的形式传递一个对象的集合,它可能在任何地方改变;如果使用元组的话,则不能。
元组提供了一种完整的约束。