[英]Check if double of element in first list is present in second list and print the output
假设
List1 = [ 23, 45, 6, 7, 34]
List2 = [46, 23, 1, 14, 68, 56]
比较List1
和List2
并在List2
打印具有双List2
值的List1
的元素
Output = [23,7,34]
尝试这个:
Output = [i for i in List1 if i*2 in List2]
您可以将list2
转换为一个集合,以进行有效的查找,并使用具有上述条件的列表理解来获得所需的输出:
set2 = set(List2)
[i for i in List1 if i * 2 in set2]
您已经有了答案,但是只是为了简单起见。 基本上,您想遍历List1
并检查List2
是否在List2
。 如果是这样,则将元素添加到output
数组。
List1 = [ 23, 45, 6, 7, 34]
List2 = [46, 23, 1, 7, 14, 68, 56]
output = []
for i in List1:
if i*2 in List2:
output.append(i)
print output
您已经有了答案。 但是,仅出于娱乐目的,我想出了以下方法。 我没有对这里列出的所有方法进行基准测试。 这样做很有趣。 这是一个有趣的问题,可以进一步研究。 但是,仅出于此目的,我介绍了我所做的解决方案。
import numpy as np
l = np.array(List1) * 2
print(l)
## array([46, 90, 12, 14, 68])
print(set(l) & set(List2))
## {68, 46, 14}
l2 = set(l) & set(List2)
print([List1[list(np.nonzero(l == i))[0][0]] for i in l if i in l2])
## [23, 7, 34]
它使用numpy的广播以及Python set的快速交集操作。 如果两个列表很大,这可能很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.