[ y for x in l for y in (expandStr(x) if isinstance(x, str) else [x]) ]
# ^^^^^^^^^^
# loop through the elements in l
#
# ^^^^^^^^^^^^ ^^^
# if x is a string, use the sequence that `expandStr` returns;
# otherwise just use a 1-element list with the original value
#
# ^^^^^
# loop through the sequence that is returned by the ternary expression
#
# ^
# and place that in the final result list
由于要添加另一个函数的所有结果(需要循环)或添加
x
本身,因此需要添加另一个具有条件iterable源的循环:因此,如果
x
不是字符串,代码将使用单个元素元组作为嵌套循环的循环源。如果没有一个列表的理解,看起来像:列表理解中的
if
仅用作筛选器,如下所示:然后将该条件用作过滤器,从序列中过滤出不符合该条件的所有元素。你知道吗
如果要根据list元素更改列表中的项目,则需要调整
something
表达式。在这里,您可以使用三元表达式语法:在您的例子中,您希望添加一个元素,或者扩展一个元素列表。这不可能直接实现,因此您必须选择一个共同点,即始终通过元素列表进行扩展。因此,必须将一个元素放入一个单元素列表中,然后可以再次循环:
相关问题 更多 >
编程相关推荐