我有一个这种形式的元组列表:
my_list = [(a,b),(c,d),(e,f)]
我想对每个元组的第二个成员做一些事情。如果我需要制作一个新列表,这很好,但我不需要旧的列表。
这就是我现在正在做的事情:
new_list = []
for x,y in my_list:
new.list.append((x,my_function(y)))
这有效,但感觉很笨,它是最好/最pythonic /最快的方式吗?
答案 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]