<p>这是一个有趣的问题,也许是一个很好的情况,在这种情况下,<strong>图</strong>可能会有用。您可以在python中实现一个图,只需使用一个字典,字典的键是球员的名字,其值是列出已经传球的球员。在</p>
<pre><code>passes = {
'Messi' : ['Iniesta', 'Xavi','Neymar', 'Xavi', 'Xavi'],
'Iniesta' : ['Messi','Xavi', 'Neymar','Messi', 'Xavi'],
'Xavi' : ['Messi','Neymar','Messi','Neymar'],
'Neymar' : ['Iniesta', 'Xavi','Iniesta', 'Xavi'],
}
</code></pre>
<p>要获得任何一个玩家的传球次数:</p>
^{pr2}$
<p>向特定玩家添加新传球:</p>
<pre><code>passes['Messi'].append('Xavi')
</code></pre>
<p>数一数梅西传给哈维的次数</p>
^{4}$
<p>要增加一个新球员,只要在他第一次传球时就加上他</p>
<pre><code>passes['Pele'] = ['Messi']
</code></pre>
<p>现在,他也准备好有更多的传球给他</p>
<pre><code>passes['Pele'].append['Xavi']
</code></pre>
<p>这种类似图表的数据结构的优点在于,你不仅保留了传球的次数,而且还保存了每一次传球的信息(从梅西到伊涅斯塔)</p>
<p>这里是一些捕捉这种行为的函数的超级简单的实现(我认为初学者应该能够掌握这些东西,如果下面的内容有点太混乱,请告诉我)</p>
<pre><code>passes = {}
def new_pass(player1, player2):
# if p1 has no passes, create a new entry in the dict, else append to existing
if player1 not in passes:
passes[player1] = [player2]
else:
passes[player1].append(player2)
def total_passes(player1):
# if p1 has any passes, return the total number; otherewise return 0
total = len(passes[player1]) if player1 in passes else 0
return total
def total_passes_from_p1_to_p2(player1, player2):
# if p1 has any passes, count number of passes to player 2; otherwise return 0
total = passes[player1].count(player2) if player1 in passes else 0
return total
</code></pre>
<p>理想情况下,您应该将<code>passes</code>保存在可以持续更新的某个数据库中,但是即使没有数据库,您也可以添加以下代码并运行它来获得想法:</p>
<pre><code># add some new passes!
new_pass('Messi', 'Xavi')
new_pass('Xavi', 'Iniesta')
new_pass('Iniesta', 'Messi')
new_pass('Messi', 'Iniesta')
new_pass('Iniesta', 'Messi')
# let's see where we currently stand
print total_passes('Messi')
print total_passes('Iniesta')
print total_passes_from_p1_to_p2('Messi', 'Xavi')
</code></pre>
<p>希望您觉得这很有帮助;下面是关于<a href="http://www.python.org/doc/essays/graphs/" rel="nofollow">the python docs</a>中的图的python实现的更多信息(这是一个有趣的回答,谢谢!)在</p>