Python可迭代对象(第四次学习)


Python可迭代对象

可迭代对象:在Python中实现特殊方法_iter_()的类的对象称为可迭代对象。
可迭代对象具有惰性求值的特点:只在必要时才会生成下一个值,每个值只会生成一次。
不支持下标访问指定位置的元素:迭代器不持有任何元素,所以同时也不支持切片运算和内置函数len(),只能从前往后逐个生成值
迭代器对象有哪些:例如map,zip,enumerate,filter,生成器等
可迭代对象有哪些:包括迭代器对象,列表,元组,字典,集合,字符串和range对象。

注意:不要混淆可迭代对象和迭代器对象

3.1列表

特点:①可同时包含整数,实数,字符或者列表,元组,字典,元组以及其它任意对象。
②列表强大但负担重,应该少用。

1,创建:

①直接=:

alist=[1,'a','围棋']
alist=[]//空列表

②用list()直接转换(可转元组,range,str,dict,set或其它有限长度的可迭代对象)
在这里插入图片描述

2,删除

del命令:适用于所有类型变量
在这里插入图片描述

3,列表元素访问

类似于C语言数组,直接下标访问

4,常用方法

注意:某某方法的用是对象名.方法名(),函数则直接是函数名()
append(追加的元素):追加,无返回值
insert(下标index,元素):插入,无返回值
extend(可迭代对象):拓展,追加多个元素,无返回值

clear():删除列表所有元素,不影响列表的引用,无返回值
pop()
remove()

sort()
reserve()

5,列表对象支持的运算符(易忘)

+:对元素算数加法,对列表连接,可用+=等价于extend()
*:对元素算数乘法,对列表序列重复输入

6,列表内置操作函数

max(),min(),len(),zip():弄成元组,map(),any():是否有等价于true的元素。

7.列表推导式

(1)[表达式 for 变量 in 范围+操作 if 条件]:if 条件可不要。类似于
for(变量;范围,操作){表达式}
例如

1)过滤
alit=[1,2,-1]
[i for i in alist if i>0]
[1,2]
(2)循环
alis=[x*x for x in range(10)     //等价于
alist=[]
for x in range(10)
alist.append(x*x)
(2)嵌套循环
vec=[[1,2,3],[4,5,6][7,8,9]]
[num for elem in vec for num in elem]           //等价于
vec=[[1,2,3],[4,5,6][7,8,9]]
result=[]
for elem in vec:
for num in elem                          //第一个为外循环,第二个为内循环
        result.append(num)
result
[1,2,3,4,5,6,7,8,9]

(3再多一级的嵌套就不能用了)

8.切片操作:[ : : ]
[start=0:stop=end:step=1]
左闭右开,step为负数则反着操作
例如:

alist=[1,2,3,4,5]
alit[2:4:1]
alist
[3,4]

注意:alist[2:4:1]返回的是一个新列表原来,列表不变
使用切片增加元素
alist=[1,2]
alist[len(alist):]=[3]
alist
[1,2,3]

3.2元组

轻量级列表,只有一个元素时后面要+一个逗号

1.创建和访问

x=(1,2,3)
x[0]
1
x[-1]
3
x[1]=4
报错,元组不能改变
y=(1)
报错,要写成y(1,)
tuple(range(2))
(0,1)

2.元组和列表的区别
同:
①都支持下标
②支持技术count(),len(),index(),map(),filter()和+,*,+=,in
异:
①元组不可变序列,即不可增删改。(即没有append()这些)
②可以使用切片操作但是仅可用于访问其中元素
③内部做了优化比列表快
④元组可以作为字典的键使用,列表不行

3,生成器表达式
①与列表推导式相似,但是使用(),里面格式一样。
②返回结果属于迭代器对象(只在需要时生成新元素)
访问:使用__next__()方法或next(对象)进行遍历,或者for循环也行。
在这里插入图片描述


3.3,字典(dict)

1,①包含若干“键:值”的无序可变容器对象,表示一种映射关系。(也称为关联数组)
②字典的“键”可以为任意不可变数据,如整数,实数,复数,字符串,元组等可哈希数据,不能使用列表,集合,字典或其它可变类型。,键不可以重复,值可以。
2,方法
clear(),copy(),fromkey(对象作为键,value作为所有键的值【值就一个,多个键的话值都一样】),get(键,返回值):返回此键的值,否则返回自己设置的值。items()返回所有元素,keys()返回所有键,values():返回所有值的一个对象。pop(k,[,d]):删除k为键的元素并返回对应值,没有则返回k。
popitem():按后进先出(栈)顺序删除并返回一个元组。

3,4集合

1,无序可变序列,元素之间不可重复,集合可包含数字,字符串,元组等不可变类型数据(可哈希),不能以任何方式包含(注意是包含,不是转换)列表,字典,集合等不可变类型。不能调用hash()的都不能作为集合的元素。也不能作为字典的键。
2,集合推导式


3,5序列解包(连续赋值)

a,b=1,2              //等价于a=1,b=2
 
  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值