我觉得这个问题很简单但找不到答案.
我有一个长度为2的元组列表.
我想得到一个长度为3的元组列表,其中第三个元素是对其他两个元素进行某些操作的结果.
例:
for val_1, val_2 in list_of_tuples
#...
#some multi line operation
#...
val_3 = result
replace (val_1, val_2) by (val_1, val_2, val_3) in list
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
使用列表理解.
>>> list_of_tups = [(1,2),(2,3),(3,4)]
>>> [(i,j,i+j) for i,j in list_of_tups]
[(1, 2, 3), (2, 3, 5), (3, 4, 7)]
Run Code Online (Sandbox Code Playgroud)
现在重新分配它
>>> list_of_tups = [(i,j,i+j) for i,j in list_of_tups]
Run Code Online (Sandbox Code Playgroud)
迭代时不要修改列表,因为它可能会产生一些不良影响.
对于多行操作,这很容易。
def f(i, j):
# math here
# more math here
return new_result
Run Code Online (Sandbox Code Playgroud)
进而
result = [(i, j, f(i, j)) for i, j in tuples]
Run Code Online (Sandbox Code Playgroud)
你可以做类似的事情
for index, (val_1, val_2) in enumerate(list_of_tuples):
# do stuff
val_3 = # something
list_of_tuples[index] = (val_1, val_2, val_3)
Run Code Online (Sandbox Code Playgroud)