数据推导式(生成式)

#bisect用来处理已排序的序列,默认是insort_right和bisect_right

# insort_right\insort\bisect_right\bisect\insort_left\bisect_left
# bisect采用二分查找算法,来维持可排序的序列,包括插入和查找
# insort_left\right:若查找数据已存在,则插入到该数据之前(后)
# bisect_left\right:待查找数据的左(右)侧下标
import bisect
int_list = [] # 可以用任意可修改的序列
# 插入即可排序
bisect.insort(int_list,3)
bisect.insort(int_list,2)
bisect.insort(int_list,5)
bisect.insort(int_list,1)
print(int_list)
print(bisect.bisect(int_list,3))
# bisect里的bisect默认是bisect_right
什么时候不该使用数组(引出array和deque)

python中的array是C语言的数组,

list中的方法:append\clear\copy\count\extend\index\insert\pop\remove\reverse\sort
array中的方法:append\buffer_info\byteswap\count\extend\frombytes\fromfile\fromlist\fromstring\fromunicode\index\insert\
array只能存放指定的数据类型
b(signed char)\B(unsigned char)\u(PY_UNICODE)\h(signed short)\H(unsigned short)\i(signed int)\I(unsigned int)\等等
my_array =array.array("i")
my_array.append("abc") # 报错,只存int类型数据
列表推导式(也叫生成式)、生成器表达式、字典推导式
列表生成式:

通过一行代码,生成列表,列表生成式性能高于列表操作(但如果逻辑过于复杂就可以不用,代码可读性很重要)

1、提取出1-20之间的奇数:先循环再条件判断

odd_list = [i for i in range(21) if i%2==1]
# 2、逻辑复杂的情况:可替代map\reduce\等函数
def handle_item(item):
    return item*item
odd_list = [handle_item(i) for i in range(21) if i%2==1]
生成器表达式:

列表生成式的变形,把[]变为()即可,最后生成generator

odd_gen = (i for i in range(21) if i%2==1)
字典推导式:

应用(可将字典的键和值对调)

my_dict = {"bobby1":22,"bobby2":23,"bobby3":5}
reversed_dict = {value:key for key,value in my_dict.items()}
集合推导式:

应用(将字典的key全放到集合里),还是大括号

my_set = {key for key,value in my_dict.items()}
还有一个方式,可以将字典的key放到集合里
my_set = set(my_dict.keys()) 

set是可以接收iterable对象,然后转化为set的。但使用集合推导式可以另外自己加逻辑

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值