代码之家  ›  专栏  ›  技术社区  ›  Ben S.

改变列表中的元组-这是最好的方法吗?

  •  1
  • Ben S.  · 技术社区  · 12 年前

    我有一个元组列表,格式如下:

    my_list = [(a,b),(c,d),(e,f)]
    

    我想对每个元组的第二个成员做点什么。如果我需要列一个新的清单,那没关系,尽管我不需要旧的清单。

    这就是我现在所做的:

    new_list = []
    for x,y in my_list:
        new.list.append((x,my_function(y)))
    

    这很有效,但感觉很笨重,这是最好/最蟒蛇/最快的方式吗?

    2 回复  |  直到 12 年前
        1
  •  5
  •   Martijn Pieters    12 年前

    使用列表理解生成新的元组:

    new_list = [(x, my_function(y)) for x, y in my_list]
    

    这与您的版本相同,但避免了重复 .append() 调用并一次性构建列表。

        2
  •  4
  •   mgilson    12 年前

    使用列表理解通常更简单:

    [(x, function(y)) for x,y in my_list]
    

    然后你可以把它写回 my_list 或者如果您选择以下选项,则为其指定一个新的变量名:

    my_list = [(x, function(y)) for x,y in my_list]
    

    或者甚至做一个切片赋值来替换 我的列表(_L) 到位:

    my_list[:] = [(x, function(y)) for x,y in my_list]