python中列表、字典和map,lambda函数的操作浅析新

一:一些简单的操作

列表切片

a=[1,2,3,4,5,6,7,8]
a[1:]
[2, 3, 4, 5, 6, 7, 8]
a[::-1]
[8, 7, 6, 5, 4, 3, 2, 1]
a[2:4]
[3, 4]
a[::-2]
[8, 6, 4, 2]
a[-3:-1]
[6, 7]

列表生成

x=[x**2 for x in a]
[1, 4, 9, 16, 25, 36, 49, 64]

字典生成

b={'q':1,'w':2,'e':3}
 {'e': 3, 'q': 1, 'w': 2}
c={k:(v+1) for k,v in b.items()}
{'e': 4, 'q': 2, 'w': 3}

注意,b.items()的方法是把字典中所有的元素以列表的形式展现出来,用b.keys(),b.values()一样

如果在判断一个key是否在字典,应使用如下

if x in dic:
    pass

时间复杂度为1

但是若采用

if x in dic.keys():
    pass

时间复杂度会变成n

我在这里有很深感触。

map函数的简单使用。

a=[1, 2, 3, 4, 5, 6, 7, 8]
b=list(map(str,a))
['1', '2', '3', '4', '5', '6', '7', '8']

map和lambda的简单使用

c=list(map(lambda x : x+2 , a))
[3, 4, 5, 6, 7, 8, 9, 10]

再配合filter使用

c=list(map(lambda x : x+2 , filter(lambda x : x % 3 == 0,a)))
[5, 8]

二,一些高级特性

1.enumerate函数的使用

enumerate可以把各种迭代器包装为生成器,以便稍后产生输出值,生成器每产生一对输出值,其中,前者表示循环下标,后者表示从迭代器中获取的下一个序列元素。

举例如下

a=['qwqw','dota','lol','dnf','bibi']
for k,v in enumerate(a):
    print(k,v)
0 qwqw
1 dota
2 lol
3 dnf
4 bibi

2.zip函数的使用

python3中的zip函数,可以把两个或者两个以上的迭代器封装为生成器,以便以后求值。这种zip生成器,会从每个迭代器中获取该迭代器的下一个值,然后把这些值汇聚成元组,与通过下标来访问多份列表的那种写法相比,这种zip写出来的代码更加清晰。如果遇到的输入的迭代器的长度不同,那么只要有一个迭代器耗尽,zip就会停止工作。

简单举例如下

a=['zhang','li','zhao']
b=['haha','yaya','wawa','wuwu']
for k,v in zip(a,b):
    print(k,v)
zhang haha
li yaya
zhao wawa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值