<p>您可以使用两种主要方法:在<code>for</code>循环中构建一个元组,然后返回它;或者将函数设为生成器,然后使用该生成器构建元组。你知道吗</p>
<p>方法1:连接到空元组</p>
<pre><code>def encontra_palavras(sopa):
result = ()
tuplo_palavra = obtem_palavras(sopa)
tuplo_linha = obtem_grelha(sopa)
for item in tuplo_palavra:
for item1 in tuplo_linha:
if item in item1:
result += ((item, tuplo_linha.index(item1), item1.index(item)),)
return result
</code></pre>
<p>这是最简单的方法,但效率不高,因为每个<code>+=</code>操作都会创建一个新元组。您还可以构建一个列表,在返回之前将其转换为元组。你知道吗</p>
<p>方法2:元组理解(技术上是传递给<code>tuple</code>的生成器表达式)</p>
<pre><code>def encontra_palavras(sopa):
tuplo_palavra = obtem_palavras(sopa)
tuplo_linha = obtem_grelha(sopa)
return tuple((item, tuplo_linha.index(item1), item1.index(item))
for item in tuplo_palavra
for item1 in tuplo_linha
if item in item1)
</code></pre>
<p>进近#3发电机</p>
<pre><code>def encontra_palavras(sopa):
result = ()
tuplo_palavra = obtem_palavras(sopa)
tuplo_linha = obtem_grelha(sopa)
for item in tuplo_palavra:
for item1 in tuplo_linha:
if item in item1:
yield item, tuplo_linha.index(item1), item1.index(item)
def encontra_palavras_as_tuple(sopa):
return tuple(encontra_palavras(sopa))
</code></pre>
<p>如果您通常只是迭代<code>encontra_palavras</code>的结果,这种方法会更好,因为您可以直接使用生成器,而无需将其转换为元组。这意味着您可以遍历<code>encontra_palavras</code>的项,而不将它们存储在内存中(这称为延迟求值)。你知道吗</p>