回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在编写一个Python脚本,似乎无法理解它的最后一部分。代码如下:</p>
<pre><code>def aggregate(data):
data.sort()
i = 0
while i < len(data) - 1:
while i < len(data) - 1 and data[i][1] >= data[i+1][0]:
data[i] = (data[i][0], max(data[i][1], data[i+1][1]))
data.pop(i+1)
i += 1
if __name__ == '__main__':
itervals = [(1,4), (2,2222), (2,3), (4,7), (8,15), (16,31), (32,63), (64,127), (128,255), (256,511), (512,1023), (1024,2047), (2048,4095), (4096,8191), (8192,16383), (16384,32767), (32768,65535), (65536,131071), (131072,262143), (262144,524287), (524288,1048575), (1048576,2097151), (2097152,4194303), (4194304,8388607), (8388608,16777215)]
formatted = lambda vals: '[{0}]'.format(', '.join('({0}-{1})'.format(
iterval[0], iterval[1])
for iterval in sorted(vals)))
print(formatted(itervals))
aggregate(itervals)
print(formatted(itervals))
</code></pre>
<p>现在我被迫手动输入数字范围,正如您在这行看到的:</p>
<pre><code>itervals = [(1,4), (2,2222), (2,3), (4,7), (8,15), (16,31), (32,63), (64,127), (128,255), (256,511), (512,1023), (1024,2047), (2048,4095), (4096,8191), (8192,16383), (16384,32767), (32768,65535), (65536,131071), (131072,262143), (262144,524287), (524288,1048575), (1048576,2097151), (2097152,4194303), (4194304,8388607), (8388608,16777215)]
</code></pre>
<p>相反,我想打开文件<code>intervals.txt</code>,并使用其中的内容,即:</p>
<pre><code>1,4
2,2222
2,3
4,7
8,15
16,31
32,63
64,127
128,255
256,511
512,1023
1024,2047
2048,4095
4096,8191
8192,16383
16384,32767
32768,65535
65536,131071
131072,262143
262144,524287
524288,1048575
1048576,2097151
2097152,4194303
4194304,8388607
8388608,16777215
</code></pre>
<p>如何打开<code>intervals.txt</code>文件并使用其内容?里面没有括号,所以我不确定这是否是个问题。此外,这些范围是用换行符而不是逗号来划分的(如上面所示)。你知道吗</p>
<p>作为对@sideffect的响应,您的代码将输出以下内容:</p>
<pre><code>[(1-4
), (1024-2047
), (1048576-2097151
), (128-255
), (131072-262143
), (16-31
), (16384-32767
), (2-2222
), (2-3
), (2048-4095
), (2097152-4194303
), (256-511
), (262144-524287
), (32-63
), (32768-65535
), (4-7
), (4096-8191
), (4194304-8388607
), (512-1023
), (524288-1048575
), (64-127
), (65536-131071
), (8-15
), (8192-16383
), (8388608-16777215)]
[(8388608-16777215), (1-8388607
)]
</code></pre>
<p>这是应该输出的内容:</p>
<pre><code>[(1-4), (2-3), (2-2222), (4-7), (8-15), (16-31), (32-63), (64-127), (128-255), (256-511), (512-1023), (1024-2047), (2048-4095), (4096-8191), (8192-16383), (16384-32767), (32768-65535), (65536-131071), (131072-262143), (262144-524287), (524288-1048575), (1048576-2097151), (2097152-4194303), (4194304-8388607), (8388608-16777215)]
[(1-4095), (4096-8191), (8192-16383), (16384-32767), (32768-65535), (65536-131071), (131072-262143), (262144-524287), (524288-1048575), (1048576-2097151), (2097152-4194303), (4194304-8388607), (8388608-16777215)]
</code></pre>