【发布时间】:2020-12-25 15:55:36
【问题描述】:
我有一个列表 list1 的 3 个元组子列表,例如
[[(['A', 'B', 'A'], ['B', 'O', 'A']),
(['A', 'B', 'A'], ['B', 'A', 'O']),
(['A', 'B', 'O'], ['B', 'O', 'A']),
(['A', 'B', 'O'], ['B', 'A', 'O']),
(['A', 'B', 'A'], ['B', 'O', 'A']),
(['A', 'B', 'A'], ['B', 'A', 'O'])],
[(['A', 'B', 'A'], ['B', 'A', 'A']),
(['A', 'B', 'O'], ['B', 'A', 'A']),
(['A', 'B', 'A'], ['B', 'A', 'A'])],
[['A', 'B', 'A'], ['A', 'B', 'O']],
[['A', 'B', 'B']],
[['B', 'A', 'A']]]
假设list2 = ['A', 'B', 'A']. 我的目标是获取list1 中包含元组list2 的任何元组对(或单例元组)的索引列表。我尝试如下使用enumerate函数但结果不正确
print([i for i, j in enumerate(bigset) if ['A', 'B', 'A'] in j[0] or
['A', 'B', 'A'] == j[0] or [['A', 'B', 'A']] in j[0]])
谁能帮我解决这个问题?由于list1 中出现的元组的不同大小的元组不匹配,我很困惑。
我的另一个问题是:我想在list1 中找到三元素列表的总数。因此,如果我手动操作,答案是22。但是如何在代码中做到这一点?我想我们需要使用两个for 循环?
预期输出对于上面的list1 和给定的list2,我们会得到包含list2 的索引列表是[0,1,5,6,7,9,10]。
【问题讨论】:
-
你有一个包含五个列表的列表,内部列表有时包含元组,包含列表。请为
list1分享您想要的确切输出。 -
发布的代码中没有“元组的元组”。您所拥有的主要是带有一些元组的列表。几乎不可能像发布的那样阅读。为什么不把长队分开?
-
非常杂乱无章。您最好将其更改为更友好的格式(例如元组列表的列表)并查看您想要实现的目标
-
@timgeb:我显示了我想要的
list1.的确切输出,你能帮忙吗?我有tuples的原因是因为我使用函数list(itertools.product())来创建这些对。 -
@TomKarzes:请将每对元组视为大列表中的一个元素。我只关心在
list2.中获取包含给定元组的那些对的位置列表你现在更清楚了吗?
标签: python python-3.x tuples