如何提取python中存在于另一个列表中的嵌套元组列表的编号
我在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=
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
也是缺少的一个子列表。