我如何将其转化为 Python 列表理解?

How Do I Turn This Into A Python List Comprehension?

我想让它更有效率,但我不知道如何将它变成 python 列表理解。

coupons = []
for source in sources:
    for coupon in source:
        if coupon.code_used not in coupons:
            coupons.append(coupon.code_used)
used_codes = set(coupon.code_used for source in sources for coupon in source)

您无法访问当前创建的列表,但如果顺序不重要,您可以使用 set:

coupons = set(coupon.code_used for source in sources for coupon in source)

我假设结果列表的顺序不重要,因为这样我们就可以使用集合来消除重复项。

coupons = list(set(coupon.code_used for source in sources for coupon in source))

这使用生成器表达式,其中 for 子句的出现顺序与嵌套循环中的出现顺序相同,以提取所有代码。 set 仅保留唯一代码,list 从集合中创建一个列表(任意排序)。

coupons = {x for x in (y.code_used for y in coupon for coupon in sources)}

你实际上是在寻找 set