listA = [0,1,0,1....0,1] listB = ['A','B','C'....'An','Bn'] 结果是 finallist = ['B','D'...'Bn'] 就是根据 listA 为 1 的值 对应选出 listB 的值,不用 for 循环,怎么写效率最高
1
YehShs 2018-08-14 20:06:30 +08:00 2
finallist = listB[1::2]
|
2
vipppppp 2018-08-15 09:42:31 +08:00
思考了一下,觉得还是写 for 循环靠谱。。。
final_list = [a[i] for i in range(min(len(a), len(b))) if b[i] == 1] |
3
vipppppp 2018-08-15 09:43:06 +08:00
a,b 数组写反了 T_T
|
4
mayorbryant 2018-08-15 18:23:21 +08:00
试试
map(lambda y: y[1], filter(lambda x: x[0] == 1, zip(a, b))) |
5
mayorbryant 2018-08-15 18:24:36 +08:00
上面那个 == 1 也可以去掉,主要是提醒你,如果想要 0 丢应的,就把 1 换成 0
|
6
mayorbryant 2018-08-15 18:27:38 +08:00
当然,如果你的需求只是跳位取值的话,用 list 自带的步长是最简洁的
# 取奇数位 b[1::2] # 取偶数位 b[0::2] |
7
longchisihai 2018-08-15 19:01:44 +08:00
|