【发布时间】:2019-03-03 08:51:33
【问题描述】:
我正在努力理解嵌套列表的理解,并阅读了出色的解释 here。
我正在翻译的问题是我的内部循环中有一个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移动到同一个位置,不要放在值表达式中。 -
然后你放弃了
enumerate()函数调用,现在你没有有一个d变量来测试。 -
@MartijnPieters 是的,第二次枚举中
d的丢失是我问题的症结所在。我会考虑一下您和 t@Jean-FrancoisFabre 的建议,谢谢。 -
@Sayse 我相信列表理解是一种更“pythonic”的做事方式,并且会提供更简洁、更易于维护的代码。
-
在这种情况下,我强烈反对。
标签: python list if-statement list-comprehension