我几年没用Python了,我想弄清楚特定的列表理解意味着什么。
以下是代码:
cols = [i for i, col in enumerate(desc) if col[0].startswith('word')]
我正在查看Python文档中的列表推导页面,我没有看到任何描述逗号的内容然后单独的语句意味着什么。
这段代码如何看待非列表理解?
答案 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/
简单赋值左侧的元组(或列表)(未为扩充赋值定义解包)最多只能包含一个带有单个星号的表达式(此后称为“星号”表达式,而列表中的其他表达式称为“强制”)。这指定一个子表达式,该子表达式将被分配一个列表,其中包含未被分配给任何强制性表达式的可迭代迭代的所有项目,或者如果没有这样的项目,则为空列表。