制作带有限制的列表/生成器的最Pythonic方法

问题描述 投票:0回答:2

我想在

matplotlib
中绘制一个函数,但仅限于由两个浮点数界定的范围内,例如
2.6
8.2
。为此,我需要一个包含两个浮点边界的列表或生成器,例如

[2.6, 3, 4, 5, 6, 7, 8, 8.2]

我知道可以这样做

lst = [2.6]
lst.extend(list(range(ceil(2.6), ceil(8.2))))
lst.append(8.2)

但这很奇怪。有没有更好的Pythonic方法来做到这一点?

python list matplotlib generator
2个回答
0
投票

PEP 448 的额外解包概括 至少让这变得不那么冗长:

lst = [2.6, *range(ceil(2.6), ceil(8.2)), 8.2]

我个人会将它包装在一个函数中,并记录你这样做的内容/原因,但它内联工作得很好,假设代码在上下文中比在这里缺乏上下文更有意义。


顺便说一句,原始代码中的

list
调用是多余的;
.extend
接受任何可迭代对象,就像
list
构造函数一样,因此如果您可以首先将其转换为
list
,则可以将其直接传递给
extend
并避免临时
list


0
投票

列表推导式具有Python风格的声誉,所以你可以尝试:

ll=[2.6, 3, 4, 5, 6, 7, 8, 8.2]
x1,x2=2.6,7
[x for x in ll if x>=x1 and x<=x2]
© www.soinside.com 2019 - 2024. All rights reserved.