代码之家  ›  专栏  ›  技术社区  ›  systempuntoout

在列表元素前面加前缀

  •  15
  • systempuntoout  · 技术社区  · 14 年前

    有这样的清单:

    ['foo','spam','bar']
    

    有没有可能,使用列表理解,得到这个列表作为结果?

    ['foo','ok.foo', 'spam', 'ok.spam', 'bar', 'ok.bar']
    
    2 回复  |  直到 11 年前
        1
  •  31
  •   unutbu    14 年前
    In [67]: alist = ['foo','spam', 'bar']
    
    In [70]: [prefix+elt for elt in alist for prefix in ('','ok.') ]
    Out[70]: ['foo', 'ok.foo', 'spam', 'ok.spam', 'bar', 'ok.bar']
    
        2
  •  1
  •   Ivo van der Wijk    14 年前

    使用列表理解,您创建的是新的列表,而不是将元素附加到现有列表中(这可能与非常大的数据集有关)

    为什么它必须是一个列表?仅仅因为python有它们,使用for循环并不意味着是一种糟糕的编码实践。