<p>如果我们先将列表1整理成更友好的格式,对您的实现有用吗?如果是这样的话,你可以用一种非常简单的方式:</p>
<p>检查list1的每个元素,如果元素本身是一个元组的大列表,那么我们希望进一步解包。如果该元素是一个元组(因此该元组的第一个元素是一个列表),或者它本身就是一个3元素列表,那么我们只想按原样附加它</p>
<pre><code>nice_list = []
for i in list1:
if type(i[0]) == str or type(i[0]) == list:
# i.e. i is one of your 3-element lists, or a tuple of lists
nice_list.append(i)
else:
#If i is still a big list of other tuples, we want to unpack further
for j in i:
nice_list.append(j)
</code></pre>
<p>然后,您可以更轻松地搜索索引:</p>
<pre><code>for i, idx in zip(nice_list, range(len(nice_list))):
if ['A', 'B', 'A'] in i:
print(idx) #Or append them to a list, whatever you wanted to do
</code></pre>
<p>对于您关于查找有多少个3元素列表的问题,如果不是特别优雅的解决方案,可以使用For循环:</p>
<pre><code>no_of_lists = 0
for n in nice_list:
if type(n) == tuple:
no_of_lists += len(n)
elif type(n) == list and type(n[0]) == list:
# if it is a list of lists
no_of_lists += len(n)
elif type(n) == list and type(n[0]) == str:
#if it is a 3-element list
no_of_lists_lists += 1
print('Number of 3-element lists contained:', no_of_lists)
</code></pre>
<p>编辑:为了回答您在评论中提出的关于<code>for n in nice_list</code>部分如何工作的问题,只需迭代列表中的每个元素。要探索这一点,请尝试编写一些代码来打印<code>nice_list[0]</code>、<code>nice_list[1]</code>等,或者编写一个for循环来打印每个<code>n</code>,这样您就可以看到它是什么样子了。例如,您可以执行以下操作:</p>
<pre><code>for n in nice_list:
print(n)
</code></pre>
<p>去了解它是如何工作的</p>