列表理解中初始变量的用途

时间:2015-10-21 19:39:21

标签: python python-2.7 for-loop list-comprehension

max-age=0

有人可以解释直接位于关闭括号之后和此代码第一行中 之前的 i ,或者分享链接或指南解释这些代码;我发现的只是一般性解释(不是python,而是一般的程序员)但没有太具体;我理解(我认为)如果i%2 == 0 ,对于我的范围(51),而不是之前的 i 部分。

5 个答案:

答案 0 :(得分:2)

开括号后面的第一个i表示将存储在列表中的值。出现的另一个i's只是循环变量。从技术上讲,它们都是循环控制变量,但是,第一个i是将存储在列表中的变量。

答案 1 :(得分:2)

列表推导只是一些等效循环的简写。

result = []
for i in range(3):
    result.append(i)

表示:

result

列表理解只是一次构建列表匿名,即没有为其指定名称(如上例中的i)。

第一个['c' for i in range(3)] [2*i for i in range(3)] ['hello'[i] for i in range(3)] 所做的回答是,它回答了“我在下一个循环定义的每次迭代中添加到列表中的内容是什么?”

尝试这些理解,看看你得到了什么:

@echo off

set /a max=0
set /a min=32767
echo %time%
:start
TITLE Min:%min% Max:%max%
set key=%random%
if %key% LSS %min% set min=%key%
if %key% GTR %max% set max=%key%
IF NOT %min%%max%==032767 goto start
echo %time%
pause

答案 2 :(得分:1)

当你编写列表推导时,你必须提供一个你想要为循环的每次迭代返回的值(最终会填充结果列表),然后是你正在运行的循环。在它最基本的形式,看起来像这样:

[i for i in range(10)]

这意味着“每次使用我迭代的值作为返回值并将其放入我的列表中。”你没有 这么简单。例如,如果要生成元组列表,它可能如下所示:

[(i, False) for i in range(10)]

答案 3 :(得分:1)

您所指的i是将要插入到您正在创建的新列表中的值。列表推导为您创建一个新列表,i将在该新列表中。为了打破你粘贴到英语的列表理解,你所说的(从左到右)是:

将值i输入新列表,对于0到50之间的数字范围内的i的每个值,但只有偶数,即i % 2 = 0

或者再次重新说出来:

对于范围为0-50(range(51))的每个值,只有那些偶数(i % 2 = 0)的数字,插入每个数字(由i表示的每个数字)到新列表([]):

[i for i in range(51) if i % 2 == 0]

答案 4 :(得分:1)

这是每次迭代将包含在列表中的值。

例如,尝试将其更改为i + 1,并且所有结果列表值应高1。