【七月Python入门】 第三课容器以及容器的访问使用

来源:互联网 发布:手机外汇软件哪个好 编辑:程序博客网 时间:2024/05/17 09:06

1.List/tuple

python中没有多维数组的概念,所谓多维数组就是数组嵌套。

判断容器是否为空应该使用 if not xx 或者使用len()==0

not xx 和 is none 不是一回事

遍历有两种方法

for I in li

print(i)

for I range (len(li))

print( li[ I ] ) 需要用索引

tuple 不支持append方法,只读。

list需要根据索引来做删除元素。


2.dict

dict内部是一个哈希表,没有顺序。

判断元素是否存在是判断key是否存在。

如何遍历? 根据key来遍历或者根据key和value遍历。


3.set 集合

元素本身是没有重复的;使用list来进行初始化

求并集:或操作;union生成一个新的set。

求交集:与操作;intersection 生成一个新的set。

求差集 A- A并B:-操作;difference 生成一个新的set。

求对称差 (A | B)-(A & B) 把两个集合相同的部分去除:^操作;symmetric_difference生成一个新的set。

添加元素 add

更新元素 update

删除元素 remove 必须知道元素的值

 

4.切片

[start : end :steps] >=start & <end 开区间

start默认是从第一个元素开始 end默认是到最后一个元素 step默认为1

end超出大小按照实际大小来计算。

负值怎么处理? End负数会转化为实际所处的位置,step为负数倒着切片。

切片会生成一个新的对象,原list仍保持原样。

切片做快速反转。

 

5.列表推导

快速生成列表

深拷贝与浅拷贝

#浅拷贝

li_2d=[ [0] *3 ]*3print(li_2d)li_2d [0] [0] = 100print(li_2d)

#深拷贝

li_2d=[ [0] *3 for i in range(3) ]li_2d [0] [0] = 100

 6.生成器

创建一个巨大的列表而仅仅只访问其中几个元素- 把真正的计算,推迟到实际使用时。不用到,不计算(惰性计算)。

列表推到时用()替代[]

遍历:next或for 循环


7.迭代器

可迭代和迭代器是两个概念

凡是可以用于for循环的对象,都是可迭代对象(Iterable类型的对象)。

凡是可以用于next()函数的对象,都是迭代器对象(Iterator类型的对象)。

str、list、tuple、dict、set类型数据都是可迭代对象,但是不是迭代器对象,它们可以通过iter()函数获得一个迭代器对象。

可迭代对象不一定是迭代器对象 
但是迭代器对象一定是可迭代对象

迭代器对象不一定是生成器对象 
但是生成器对象一定是迭代器对象

可迭代只需要满足for,但只有同时满足惰性计算,才是可迭代对象。因为生成器满足惰性计算,所以生成器一定是迭代器对象。

与生成器比较:生成器就是一个能返回迭代器的函数,其实就是定义一个迭代算法,可以理解为一个特殊的迭代器。调用这个函数就得到一个迭代器,生成器中的yield相当于一个断点,执行到此返回一个值后暂停,从而实现next取值。

 

原创粉丝点击