繁体   English   中英

从一个列表中获取特定索引并从另一个列表中删除的快速方法python

[英]Fast way to take specific indexes from one list and remove from other list python

从一个列表中获取特定索引并从另一个列表python中删除的最快方法是什么。

a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
b = [nan, 'gfdg', 54.0, nan, 54.0, nan, 'wre', nan, 54, nan]

我想从列表“ b”中删除nan并从列表“ a”中删除类似的索引,以使预期结果应为:

a = ['b', 'c',  'e',  'g',  'i' ]
b = ['gfdg', 54.0, 54.0, 'wre', 54]

你可以试试:

a,b = zip(*(t for t in zip(a,b) if t[1] != nan))

如果要使用列表而不是元组,请在之后使用a = list(a)b = list(b)


>>> a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
>>> b = [nan, 'gfdg', 54.0, nan, 54.0, nan, 'wre', nan, 54, nan]
>>> 
>>> a,b = zip(*(t for t in zip(a,b) if t[1] != nan))
>>> a
('b', 'c', 'e', 'g', 'i')
>>> b
('gfdg', 54.0, 54.0, 'wre', 54)

您可以使用list-comprehension来做到这一点,例如:

a = [a[i] for i in range(len(b)) if b[i] != nan]
b = [x for x in b if x != nan]

输出:

>>> a
['b', 'c', 'e', 'g', 'i']
>>> b
['gfdg', 54.0, 54.0, 'wre', 54]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM