我正在尝试理解嵌套列表推导式,并阅读了这里的优秀解释。
我遇到的问题是,在我的内部循环中有一个if子句,而且我无法看到如何将其应用于func()步骤,因为当我从嵌套循环转换为列表推导式时,我失去了来自enumerate()的计数器。
嵌套列表推导式可能看起来像这样:
我遇到的问题是,在我的内部循环中有一个if子句,而且我无法看到如何将其应用于func()步骤,因为当我从嵌套循环转换为列表推导式时,我失去了来自enumerate()的计数器。
nested_list = [[{'a': 1, 'b': 2}, {'c': 3, 'd': 4}], [{'a': 5, 'b': 6}, {'c': 7, 'd': 8}]]
new_list = []
for c, x in enumerate(nested_list):
for d, y in enumerate(x):
if d == 1:
new_list.append(y)
print(new_list)
[{'c': 3, 'd': 4}, {'c': 7, 'd': 8}]
嵌套列表推导式可能看起来像这样:
new_list = [if ??? y
for x in nested_list
for y in x]
...但是我看不到/想不到如何在嵌套的列表推导式中获取子句,因为没有计数器。
有没有办法实现这个功能,或者我应该坚持使用嵌套循环的方法?
if
移到相同的位置,不要将其放在值表达式中。 - Martijn Pietersenumerate()
函数了,现在你没有一个d
变量可以测试。 - Martijn Pietersd
的丢失是我问题的关键。我会尝试你和@Jean-FrancoisFabre的建议,谢谢。 - slackline