【问题标题】:One line "x = for... if y not in x" [duplicate]一行“x = for ...如果y不在x中” [重复]
【发布时间】:2015-01-01 16:30:30
【问题描述】:

我想把下面代码中的for... if变成一行:

cities = ["Berlin", "Berlin", "Berlin", "London"]

unique_cities = []

for city in cities:
    if city not in unique_cities:
        unique_cities.append(c)

print unique_cities

我想像这样:

unique_cities = [city for city in cities if city not in unique_cities]

这当然行不通,因为unique_cities 未在该循环中定义。

我如何用这个做一个单线?

【问题讨论】:

  • s_cities 是什么?
  • 我欺骗了这个保持秩序的食谱;如果不需要保留订单,只需使用set()
  • 提名重开,我想Juicy一般会问如何更简洁地写一个Python构造,只给出unique作为可以使用的示例问题。
  • @Kos:你不能概括写单行,不。如果属实,那将是一个方式过于宽泛的问题。
  • 嗯...好吧,我确信(也因为这看起来有点像 XY 问题)。

标签: python list-comprehension


【解决方案1】:

我认为把它变成一个集合会更容易:

unique_cities = set(cities)

【讨论】:

    【解决方案2】:

    如果顺序不重要,更简单的方法就是

    unique_cities = list(set(cities))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      相关资源
      最近更新 更多