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