我有几个项目列表:
specials = ['apple', 'banana', 'cherry', ...]
smoothies = ['banana-apple', 'mocha mango', ...]
我想创建一个新列表 special_smoothies,其中包含 smoothies 中的元素,这些元素以 specials 中的元素开头。但是,如果 specials 为空,则 special_smoothies 应与 smoothies 相同。
执行此操作的最 Pythonic 方法是什么?有没有一种方法可以在不对 specials 是否为空白进行单独的条件检查的情况下执行此操作?
请您参考如下方法:
由于您希望空特价商品的行为不同于非空商品的自然限制,因此您需要特殊情况:
if specials:
specialsmoothies = [x for x in smoothies
if any(x.startswith(y) for y in specials)]
else:
specialsmoothies = list(smoothies)
换句话说,您希望空特价的行为是“所有冰沙都是特价”,而自然限制行为是说在这种情况下“没有冰沙是特别的”,因为它们都不以以下之一开头specials 中的前缀(因为在这种情况下没有这样的前缀)。因此,无论如何(if/else 或其他)您确实需要在您的代码中创建一个特殊情况以匹配您在其语义中想要的特殊、不规则情况。
