<p>我有一个元组列表,每个元组中有两个整数和一个字符串。
我需要生成一个新的列表,删除整数范围在其他元组中重叠的元组</p>
<p>我试过这个:</p>
<pre><code>
list_all = [(0, 3, 'textA'), (0, 5, 'textB'), (8, 11, 'textC')]
empty_list = []
for i in list_all:
range_i = list( range(list_all[i][0], list_all[i][1]) )
for j in list_all:
range_j = list( range(list_all[j][0], list_all[j][1]) )
if all( item in range_j for item in range_i ) == False:
empty_list.append(range_i)
empty_list
</code></pre>
<p>但我得到了一个错误:</p>
<pre><code>---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-233-b4cebb65d49c> in <module>()
4
5 for i in list_all:
----> 6 range_i = list( range(list_all[i][0], list_all[i][1]) )
7
8 for j in list_all:
TypeError: list indices must be integers or slices, not tuple
</code></pre>
<p>之所以出现此错误,是因为<code>i</code>指向元组,而不是索引(因为您编写了<code>for i in list_all:</code>而不是<code>for i in range(len(list_all))</code></p>
<p>对于手头的任务,是否只保留与任何内容不重叠的间隔,还是保留不重叠的最大间隔数的列表?例如,如果有3个范围a、B、C,其中a和C与B重叠,但a与C不重叠,是否返回[a、C]或[]</p>