擅长:python、mysql、java
<p>这样就不必遍历列表多次:</p>
<pre><code>my_list = ['room', 10, 'chamber', 23, 'kitchen', 8]
pos = max(enumerate(my_list[1::2]), key=lambda x: x[1])[0]
print('The biggest room is ' + my_list[2*pos])
</code></pre>
<p>它使用<a href="https://docs.python.org/3/library/functions.html#enumerate" rel="nofollow noreferrer">enumerate</a>来获取<code>my_list</code>的索引,同时搜索最大值</p>
<p>或者你也可以用<a href="https://docs.python.org/3/library/functions.html#zip" rel="nofollow noreferrer">zip</a>稍微聪明一点:</p>
<pre><code>print('The biggest room is ' + max(zip(*[iter(my_list)]*2), key=lambda x: x[1])[0])
</code></pre>
<p>它依赖于在<code>my_list</code>上使用相同的迭代器将连续的值提供给<code>zip</code>(从另一个<a href="https://stackoverflow.com/questions/4356329/how-to-create-a-dictionary-from-a-line-of-text/4356415#4356415">excellent answer</a>借用)。这实际上是将平面列表转换为元组列表,这是存储原始数据的更好方法,如果您有以下选项:</p>
<pre><code>>>> list(zip(*[iter(my_list)]*2))
[('room', 10), ('chamber', 23), ('kitchen', 8)]
</code></pre>