列表、列表解析、过滤器filter和map

六、列表、列表解析、过滤器filter和map

列表

动态可伸缩:使用C中的数组实现,但C中数组长度不变,但为什么python列表可变?增加元素和删除元素底层使用数组copy操作

为什么可以动态增多删除列表元素?

列表中元素可以不同类型??因为python面向对象,面向对象的三要素:指针(对象地址,64位平台地址就是64)、对象类型、对象值。对象在同一平台指针都一样

加法和乘法运算:

下标是从0开始,可以是负数:正负数代表方向,负数时是从右到左,且起始值为-1,不在是0.

 

 

列表切片:

[begin:end:step]  :python的整套语法几乎区间都是右半开区间,如range()

切片是左闭右开的半开区间,不包含右边界

beginend都是下标,可以是负数

setp代表步幅和方向

切片中的下标可以越界,而取数组元素下标不可以越界

 

----------------------------------------------------------

#列表操作

x=range(1,4)

y=range(6,9)

print x,y

print x+y #合并成一个新的数组

print x*2 # x*y是不可以的

 

#列表切片:

print x[::]  #正向切片,step默认为1

print x[::-1]  #用切片来取反

z=range(1,10)

print z[-1:-10:-2] #[9, 7, 5, 3, 1]

print z[1:-10:-2] #[2]

#print x[11] #取数组下标不能越界

print x[1:11:2] #切片下标可以越界

 

----------------------------------------------------

 

列表的常用操作:

appendextenddel

enumertate(iter) :取索引和对应的值

len

reversed :反向

sorted :可以指定排序规则

sum

 

-------------------------------------------------------

#列表常见操作appendappend__delitem__

x.append(6)

x.append(8)

print x

n=[1,2,3]

x.append(n)  #将对象添加进来

x.append(10)

print x

 

x.__delitem__(6)  #删除是按下标删除

print x

 

#enumertate(iter)

for (index,value) in enumerate(y):

    print index,value

 

#reversed

print x.__len__()

n=range(-6,10)

print sorted(n)

n.reverse() #到排序

print n

print sorted(n,key=abs)

print sum(y)

-----------------------------------------------------------

 

列表解析

根据一个列表生成一个新的列表

列表解析比for循环遍历好,代码紧凑,for性能好些

[expr for iter in iterbale[if condition]]  #外层的[]表示返回列表

 

-----------------------------------------------------------

#列表解析 n中负数乘以2,整数保持不变,返回列表

result=[]

m=range(-5,5)

for i in  m:

    if i<0:

        result.append(i**2)

    else :

        result.append(i)

print result

 

#上述的循环和下面的解析一样

print [i**2 for i in m if i<0 ] #小于0的乘以2

print [i**2 if i<0 else i for i in m ] #多条件这样写,和for循环样的

 

-------------------------------------------------------------

 

列表过滤

filter(fun,list):根据fun(x)返回TrueFalselist中的元素进行过滤操作

map:根据fun(x)作用于每一个元素,返回一个封装新的列表

 

-------------------------------------------------------------------

#定义一个函数

def a(x) :

    if x > 0 :

        return True

    else :

        return False

 

#定义一个列表

li = range(-10,10)

print li

print filter(a,li) #过滤所有负数

 

def b(x):

    if x > 0 :

        return x

    else :

        return x**2

 

print map(b,li)  #负数需要平方

---------------------------------------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据东哥(Aidon)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值