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

时间:2013-10-17 19:56:56

标签: python tuples

我有一个这种形式的元组列表:

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

我想对每个元组的第二个成员做一些事情。如果我需要制作一个新列表,这很好,但我不需要旧的列表。

这就是我现在正在做的事情:

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

这有效,但感觉很笨,它是最好/最pythonic /最快的方式吗?

2 个答案:

答案 0 :(得分:5)

使用列表推导来生成新元组:

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

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

答案 1 :(得分:4)

使用列表理解通常更清晰:

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

然后你可以把它写回my_list或者如果你选择的话给它一个新的变量名:

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

甚至可以执行切片分配以替换my_list

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