使用下面定义的名为c的列表列表.创建一个新列表,包含列表中出现的5到45之间的所有数字



所以我应该创建一个新列表"d"从列表的列表"c",其中"包含"c"的所有数字在5到45之间

c = [[1,1,12],[2,3,7,23],[54,12,17,90],[43,52,67,9]]

d = [x for x in c if x in range(5,45)]

print(d)

我尝试了这段代码,我只得到一个空的

输出[]

你可以先把列表放平:

d = [v for x in c for v in x if v in range(5, 45)]

在你发布的代码中,你的列表推导中有x for x in c。这里的每个x都是子列表之一(例如,[1,1,12])。这是一个list永远不会满足:x in range(5,45),因为range()将寻找单个整数,而不是listx in y形式的代码永远不会在x中看到。

x代表"list of lists"中的每个列表。你可以解包c:

d = [x for x in list(itertools.chain(*c)) if x in range(5, 45)]

最新更新