在python中检查列表中的元组

时间:2015-06-01 11:58:14

标签: python-3.x numpy

假设我有一个变量列表如下:

.gridgallery figure img {
    width: 100% !important;
    max-width:100%;
    opacity: 0.95;
    display:block;
}

我想要的是获得一个值向量,它给出了列表中变量存在的真值。

所以,如果有另一个名单说

v = [('d',0),('i',0),('g',0)]

该输出应为

g = [('g',0)]

P.S。

我尝试过使用op(v,g) = [False, False, True] ,但它提供了以下内容:

np.in1d

2 个答案:

答案 0 :(得分:1)

在python中,您可以使用如下列表解析:

>>> v=[('d', 0), ('i', 0), ('g', 0)]
>>> g=[('t', 0), ('g', 0),('d',0)]
>>> [i in g for i in v]
[True, False, True]

答案 1 :(得分:1)

您可以将这些列表转换为numpy数组,然后像这样使用np.in1d -

import numpy as np

# Convert to numpy arrays
v_arr = np.array(v)
g_arr = np.array(g)

# Slice the first & second columns to get string & numeric parts.
# Use in1d to get matches between first columns of those two arrays;
# repeat for the second columns.
string_part = np.in1d(v_arr[:,0],g_arr[:,0])
numeric_part = np.in1d(v_arr[:,1],g_arr[:,1])

# Perform boolean AND to get the final boolean output
out = string_part & numeric_part

示例运行 -

In [157]: v_arr
Out[157]: 
array([['d', '0'],
       ['i', '0'],
       ['g', '0']], 
      dtype='<U1')

In [158]: g_arr
Out[158]: 
array([['g', '1']], 
      dtype='<U1')

In [159]: string_part = np.in1d(v_arr[:,0],g_arr[:,0])

In [160]: string_part
Out[160]: array([False, False,  True], dtype=bool)

In [161]: numeric_part = np.in1d(v_arr[:,1],g_arr[:,1])

In [162]: numeric_part
Out[162]: array([False, False, False], dtype=bool)

In [163]: string_part & numeric_part
Out[163]: array([False, False, False], dtype=bool)