我有三个列表如下:
a = [2, 1, 3, 5, 4]
b = [3, 3, 4, 4, 6]
c = [1983, 2401, 852, 2442, 5035]
我用过:
x = [x for x in a if x in b]
从列表a给我[3,4]
。我需要列表c中相应的值[852,5035]
。任何的意见都将会有帮助。
答案 0 :(得分:1)
x = [c_val for a_val, c_val in zip(a, c) if a_val in b]
使用zip
获取与c
的每个元素对应的a
元素。请注意,如果b
较大,最好使用set
,in
的速度要快得多:
b_set = set(b)
x = [c_val for a_val, c_val in zip(a, c) if a_val in b_set]
不要将set
调用放入列表理解中;这会在每次迭代时重新计算集合,从而破坏任何性能优势。