所以我应该创建一个新列表"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()
将寻找单个整数,而不是list
。x in y
形式的代码永远不会在x
中看到。
x
代表"list of lists"
中的每个列表。你可以解包c
:
d = [x for x in list(itertools.chain(*c)) if x in range(5, 45)]