Python 使用下面定义的名为c的列表。创建一个新列表,其中包含列表中出现的5到45之间的所有数字
所以我应该从列表“c”中创建一个新的列表“d”,其中“d”包含所有值在5到45之间的“c”的数字Python 使用下面定义的名为c的列表。创建一个新列表,其中包含列表中出现的5到45之间的所有数字,python,list,Python,List,所以我应该从列表“c”中创建一个新的列表“d”,其中“d”包含所有值在5到45之间的“c”的数字 c=[[1,1,12],[2,3,7,23],[54,12,17,90],[43,52,67,9]。 d=[x代表c中的x,如果x在范围(5,45)] 打印(d) 我尝试了这段代码,结果得到了一个空的 []您可以先展平列表: d=[v表示x在c中表示v在x中,如果v在范围(5,45)] 在您发布的代码中,您的列表中有x for x In c。这里的每个x都是一个子列表(例如[1,1,12])。这是
c=[[1,1,12],[2,3,7,23],[54,12,17,90],[43,52,67,9]。
d=[x代表c中的x,如果x在范围(5,45)]
打印(d)
我尝试了这段代码,结果得到了一个空的
[]
您可以先展平列表:
d=[v表示x在c中表示v在x中,如果v在范围(5,45)]
在您发布的代码中,您的列表中有
x for x In c
。这里的每个x
都是一个子列表(例如[1,1,12]
)。这是一个列表
永远不会满足:x在范围(5,45)
内,因为range()
将查找单个整数,而不是列表
。形式为x in y
的代码从不查看x
x
代表列表中的每个列表。您可以解压缩c
:
d=[x代表列表中的x(itertools.chain(*c)),如果x在范围(5,45)]
x
将是一个列表,它不会(正确地)与范围(5,45)进行比较
object。请使用预期的输出更新您的问题。我发现有时使用常规for循环而不是列表理解来进行故障排除,甚至正确发展列表理解是很有帮助的。是的!谢谢你,这工作做得很好。非常感谢你。我在python中是个彻头彻尾的笨蛋,你能解释一下为什么这与我最初尝试的方法不同吗?请注意,list()
不是必需的:itertools.chain()
返回一个iterable。