我有2个列表:
x=[[3, 'id1', 50],[1, 'id2', 34],[2, 'id3', 39],[5, 'id2', 26],[4,'id3', 23]]
y=[5,6,4,4,3]
根据一个条件,假设我用x
过滤了'id2'
,则得到的列表为[[1, 'id2', 34],[5, 'id2', 26]]
。
现在,我想在列表y
中打印相应的值,在这种情况下将为[6,4]
我能够根据条件从第一个列表中筛选元素,但无法找到从第二个列表中获取相应数据的方法。
如何在python中完成?
答案 0 :(得分:0)
使用zip
同时遍历列表:
x = [[3, 'id1', 50],[1, 'id2', 34],[2, 'id3', 39],[5, 'id2', 26],[4,'id3', 23]]
y = [5,6,4,4,3]
lst = [b for a, b in zip(x, y) if a[1] == 'id2']
# [6, 4]
如果您同时需要x
和y
列表的内容:
lst1, lst2 = zip(*[(a, b) for a, b in zip(x, y) if a[1] == 'id2'])
print(lst1) # ([1, 'id2', 34], [5, 'id2', 26])
print(lst2) # (6, 4)