我有一个这种形式的元组列表:
my_list = [(a,b),(c,d),(e,f)]
我想对每个元组的第二个成员做点什么。如果我需要做一个新的清单,那很好,虽然我不需要旧的。
这就是我现在正在做的事情:
new_list = []
for x,y in my_list:
new.list.append((x,my_function(y)))
这行得通,但感觉很笨重,这是最好/最蟒蛇/最快的方式吗?
使用列表推导生成新元组:
new_list = [(x, my_function(y)) for x, y in my_list]
这归结为与您的版本相同,但避免了重复.append()
调用并一次性构建列表。
使用列表推导通常更干净:
[(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]