我确信有很多关于列表推导的问题,但我有一个关于一个非常特殊的案例涉及嵌套循环和共同引用,我在其他地方找不到答案.
假设您有一个满足两个约束条件的字典:(1)字典中的每个值都是一个任意长度的列表;(2)字典外部存在一些列表,其元素是字典中键的子集(这是超出本问题范围的原因所必需的).
了解?看起来有点像这样:
someDict = {'a':[0, 1], 'b':[2, 3], 'c':[4, 5], 'd':[6, 7], 'e':[8, 9]}
supraList = ['b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
现在我想做的是:
1)仅循环someDict的那些列表,其键也是supraList的元素;
2)将那些someDict列表的元素(不是列表本身)添加到一些新的supra-list中.
效果是这样的:
... CODE ...
newSupraList = [2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
即supraList包含'b','c'和'd',因此newSupraList获取someDict中与'b','c'和'd'相关联的列表的组合元素.
通过循环实现这一点有点像:
newSupraList = []
for i in supraList:
for j in someDict[i]:
newSupraList.append(j)
Run Code Online (Sandbox Code Playgroud)
这可以通过理解来实现吗?我能写的最好的理解(而且很难看)出来了:
newSupraList = [[2, 3], [4, 5], [6, 7]]
Run Code Online (Sandbox Code Playgroud)
尽管如此,我确信有一种非常简单的方法可以迭代这样的列表以使其平坦,但是我认为我会有一些新的眼睛来尝试一些新角度的问题.循环可能更好的可读性,但我认为它在任何情况下都很有趣!