两个 list 操作问题

2018-08-14 16:53:41 +08:00
 MiracleTony

listA = [0,1,0,1....0,1] listB = ['A','B','C'....'An','Bn'] 结果是 finallist = ['B','D'...'Bn'] 就是根据 listA 为 1 的值 对应选出 listB 的值,不用 for 循环,怎么写效率最高

1540 次点击
所在节点    Python
7 条回复
YehShs
2018-08-14 20:06:30 +08:00
finallist = listB[1::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]
vipppppp
2018-08-15 09:43:06 +08:00
a,b 数组写反了 T_T
mayorbryant
2018-08-15 18:23:21 +08:00
试试
map(lambda y: y[1], filter(lambda x: x[0] == 1, zip(a, b)))

mayorbryant
2018-08-15 18:24:36 +08:00
上面那个 == 1 也可以去掉,主要是提醒你,如果想要 0 丢应的,就把 1 换成 0
mayorbryant
2018-08-15 18:27:38 +08:00
当然,如果你的需求只是跳位取值的话,用 list 自带的步长是最简洁的
# 取奇数位
b[1::2]

# 取偶数位
b[0::2]
longchisihai
2018-08-15 19:01:44 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/479735

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX