如何提取python中存在于另一个列表中的嵌套元组列表的编号

如何提取python中存在于另一个列表中的嵌套元组列表的编号,python,list,tuples,nested-lists,Python,List,Tuples,Nested Lists,我在python中有一个嵌套列表,希望提取其中的一些数字。每个子列表包含元组,每个元组有两个数字,第一个总是2。我想从子列表中提取第二个元组数,这些子列表中的第二个元组数存在于另一个列表中(check\u values)。这是我的数据: points=[[(2, 12), (2, 11)], [(2, 3), (2, 5), (2, 0), (2, 2)],\ [(2, 0), (2, 19), (2, 5)], [(2, 18), (2, 20)]] check_values=

我在python中有一个嵌套列表,希望提取其中的一些数字。每个子列表包含元组,每个元组有两个数字,第一个总是
2
。我想从子列表中提取第二个元组数,这些子列表中的第二个元组数存在于另一个列表中(
check\u values
)。这是我的数据:

points=[[(2, 12), (2, 11)], [(2, 3), (2, 5), (2, 0), (2, 2)],\
        [(2, 0), (2, 19), (2, 5)], [(2, 18), (2, 20)]]
check_values=[0, 1, 2, 3, 5, 10, 11, 17, 18, 20]
正如我的数据显示的那样,
检查值
中只存在第二个元组值,从第二个元组(即
3,5,0,2
)到最后一个元组(即
18,20
)。因此,我的结果应该是:

extracted=[[3, 5, 0, 2], [18, 20]]
我尝试了以下方法,但没有成功:

extracted=[]
for i in points:
    for j in i:
        if j[1] in check_values:
            extracted.append (i)
我真的很感谢你事先的帮助

extracted = []

# for each sublist...
for sublist in points:
    # get the second values of each tuple
    second_vals = [sec for fir, sec in sublist]

    # check if "all" of the values in `second_vals` are in `check_values`
    if all(val in check_values for val in second_vals):
        # store the `second_vals` if so
        extracted.append(second_vals)
得到

>>> extracted
[[3, 5, 0, 2], [18, 20]]
得到

>>> extracted
[[3, 5, 0, 2], [18, 20]]

尽管穆斯塔法的答案完全正确,但这里还有另一种说法:

#这将提取检查值列表中的第二个值
#也就是说:[[11],[3,5,0,2],[0,5],[18,20]]
extracted=[[pair[1]用于子列表中的pair,如果检查值中的pair[1]用于子列表中的points]
#第二步过滤出大小不同的子列表,即
#所有第二个值都在“检查值”列表中
提取=[x代表i,如果len(x)==len(点[i]),则枚举(提取)中的x
最后我们得到:

[[3,5,0,2],[18,20]]

尽管穆斯塔法的答案完全正确,但这里有另一种说法:

#这将提取检查值列表中的第二个值
#也就是说:[[11],[3,5,0,2],[0,5],[18,20]]
extracted=[[pair[1]用于子列表中的pair,如果检查值中的pair[1]用于子列表中的points]
#第二步过滤出大小不同的子列表,即
#所有第二个值都在“检查值”列表中
提取=[x代表i,如果len(x)==len(点[i]),则枚举(提取)中的x
最后我们得到:

[[3,5,0,2],[18,20]]

这里有另一种相同的方法:

points=[(2,12),(2,11)],[(2,3),(2,5),(2,0),(2,2)]\
[(2, 0), (2, 19), (2, 5)], [(2, 18), (2, 20)]]
检查_值=[0,1,2,3,5,10,11,17,18,20]
提取的_值=[]
def检查第二个值(子列表:列表):
"""
此方法将获取子列表和
检查check_值(给定列表)中每个元组的第二项的可用性
"""
#获取元组的第二项
tple_item2=[tple[1]表示子列表中的tple]
#如果两组之间的差值为空
#然后所有值都可以在第二个列表中找到
差异=设置(第2项)。差异(设置(检查值))
如果有差异:
回来
其他:
返回tple_项目2
#查找所有列表-对于已配置选项
对于点中的子列表:
找到的项目=检查第二个值(子列表)
#如果找到的项目不是无,则->追加列表
如果发现以下项目:
提取的\u值。追加(找到的\u项)
提取的值为:

打印(提取的\u值)
[[3, 5, 0, 2], [18, 20]] 

这里有另一种相同的方法:

points=[(2,12),(2,11)],[(2,3),(2,5),(2,0),(2,2)]\
[(2, 0), (2, 19), (2, 5)], [(2, 18), (2, 20)]]
检查_值=[0,1,2,3,5,10,11,17,18,20]
提取的_值=[]
def检查第二个值(子列表:列表):
"""
此方法将获取子列表和
检查check_值(给定列表)中每个元组的第二项的可用性
"""
#获取元组的第二项
tple_item2=[tple[1]表示子列表中的tple]
#如果两组之间的差值为空
#然后所有值都可以在第二个列表中找到
差异=设置(第2项)。差异(设置(检查值))
如果有差异:
回来
其他:
返回tple_项目2
#查找所有列表-对于已配置选项
对于点中的子列表:
找到的项目=检查第二个值(子列表)
#如果找到的项目不是无,则->追加列表
如果发现以下项目:
提取的\u值。追加(找到的\u项)
提取的值为:

打印(提取的\u值)
[[3, 5, 0, 2], [18, 20]] 

亲爱的@Guy,我得到了答案,但答案应该在那里,但是
11
不应该在那里,因为第一个子列表的第二个值在
检查值中都不存在。事实上,
12
缺失。对于第三个子列表,
19
也是缺少的一个。亲爱的@Guy,我得到了答案,但是
11
不应该在那里,因为第一个子列表的两个第二个值都不存在于
check\u values
中。事实上,
12
缺失。对于第三个子列表,
19
也是缺少的一个子列表。