1

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

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

我想对每个元组的第二个成员做点什么。如果我需要做一个新的清单,那很好,虽然我不需要旧的。

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

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

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

4

2 回答 2

5

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

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

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

于 2013-10-17T19:58:00.513 回答
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]
于 2013-10-17T19:57:57.770 回答