<p>使用描述性名称将有助于提高代码的可读性。你知道吗</p>
<pre><code>a = [0,1]
b = [2,4]
c = [2,0]
f = [4,6]
junctions=[a,b,c,d,f]
neighbour_list =[]
</code></pre>
<p>如果我们事先不知道锥体是什么,我们就需要找到连接处的所有锥体</p>
<pre><code># find all the cones in the junctions
cones = list()
for junction in junctions:
for cone in junction:
cones.append(cone)
# The previous could be replaced with a list comprehension
# cones = [cone for junction in junctions for cone in junction]
</code></pre>
<p>如果你只想考虑有连接点的锥体</p>
<pre><code>##cones = set(cones)
</code></pre>
<p>如果要考虑交叉点中表示的范围内的所有圆锥体,请使用</p>
<pre><code>cones = range(min(cones), max(cones) + 1)
</code></pre>
<p>如果<em>cone</em>循环是外循环,则构建列表会更容易一些,因为我们正试图找到每个cone的邻居:</p>
<pre><code># for each cone look through the junctions to find neighbors
for cone in sorted(cones): #search for neighbors from the smallest to the largest cone
neighbors = list() #make a new list for each cone
for junction in junctions:
if junction[0] == cone:
neighbors.append(junction[1])
elif junction[1] == cone:
neighbors.append(junction[0])
neighbour_list.append(neighbors)
>>> print neighbour_list
[[1, 2], [0], [4, 0], [4], [2, 3, 6], [], [4]]
>>>
</code></pre>
<p>似乎邻居的名单遗漏了一些信息-你不能轻易地分辨出邻居是为哪个圆锥。您可以使用<code>zip</code>添加信息:</p>
<pre><code>>>> print zip(sorted(cones), neighbour_list)
[(0, [1, 2]), (1, [0]), (2, [4, 0]), (3, [4]), (4, [2, 3, 6]), (5, []), (6, [4])]
>>>
</code></pre>
<p>或者在程序中稍加修改就可以添加信息列表</p>
<pre><code>neighbour_list.append((cone,neighbors))
</code></pre>