Python列表推导式中第一个item表达式的作用是什么
Python列表推导式对应问题解答
首先放出你提到的示例代码:
def anagrams(word, words): return [item for item in words if sorted(item)==sorted(word)] print(anagrams('abba', ['aabb', 'abcd', 'bbaa', 'dada']))
你标注的第一个item作用非常明确:
- 它是列表推导式的返回值定义部分,所有满足后续if筛选条件的元素,都会以你在这里写的表达式的形式,存入最终生成的新列表。这里直接写
item,意思就是符合条件的元素原样存入新列表。 - 你可以结合整个推导式的执行逻辑对应理解:
- 逐个遍历
words列表里的元素,每次把当前遍历到的元素赋值给变量item - 校验if后的条件:如果当前
item排序后的结果和传入的word排序结果相同,说明二者是变位词,符合筛选要求 - 符合要求的情况下,就取你在最前面写的
item(也就是当前符合条件的这个元素本身),加入最终返回的列表里
- 逐个遍历
- 举个实际运行的例子:你给出的调用传参里,符合条件的元素是
'aabb'和'bbaa',所以最终返回的列表就是['aabb', 'bbaa']。如果你把最前面的item改成item.upper(),那最终返回的就会是['AABB', 'BBAA'],只是当前需求要返回原始字符串,所以直接写item即可。
内容的提问来源于stack exchange,提问作者Billy Bob
相关产品推荐
相关产品推荐

