试图破译Python列表理解

时间:2015-08-02 15:58:14

标签: python list

我几年没用Python了,我想弄清楚特定的列表理解意味着什么。

以下是代码:

cols = [i for i, col in enumerate(desc) if col[0].startswith('word')]

我正在查看Python文档中的列表推导页面,我没有看到任何描述逗号的内容然后单独的语句意味着什么。

这段代码如何看待非列表理解?

3 个答案:

答案 0 :(得分:4)

  

这段代码如何看待非列表理解?

cols = []
for i, col in enumerate(desc):
    if col[0].startswith('word'):
        cols.append(i)

答案 1 :(得分:1)

items.push(productEntity);

是“简称”

cols = [i for i, col in enumerate(desc) if col[0].startswith('word')]

所以你应该把逗号看作不是语句的分离,而是作为值的分离(例如cols = [] for i, col in enumerate(desc) if col[0].startswith('word'): cols.append(i) life, universe, everything = the_answer

答案 2 :(得分:0)

它只取决于循环遍历的iterable中的值的数量。因此for关键字后面可以跟一个任意变量名。

在这种情况下,由于enumerate()包含使用这些索引的iterable项,因此它使用了2变量i, col

有关可迭代解包的更多信息,请阅读PEP 3131 https://www.python.org/dev/peps/pep-3132/

  

简单赋值左侧的元组(或列表)(未为扩充赋值定义解包)最多只能包含一个带有单个星号的表达式(此后称为“星号”表达式,而列表中的其他表达式称为“强制”)。这指定一个子表达式,该子表达式将被分配一个列表,其中包含未被分配给任何强制性表达式的可迭代迭代的所有项目,或者如果没有这样的项目,则为空列表。